Snapblocks

:information_source: 概要 ユーザーが投稿内で snapblocks を使用できるようにします。
:hammer_and_wrench: リポジトリリンク GitHub - snap-blocks/snapblocks-discourse: snapblocks discourse plugin · GitHub
:open_book: インストールガイド Discourse へのプラグインのインストール方法

機能

Snapblocks は、テキストを Snap! スクリプトの画像に変換できるようにする scratchblocks のフォークです。この Discourse プラグインにより、ユーザーは投稿内で snapblocks を使用できます。

[snapblocks][/snapblocks] という BBCode タグ内に snapblocks コードを入力することで、投稿内で snapblocks を作成できます。例:

[snapblocks]
move (10) steps
[/snapblocks]

また、[scratchblocks][/scratchblocks] をエイリアスとして使用することもできますが、無効化可能です。

[sb][/sb] を使用して、インラインで snapblocks コードを追加することもできます。

[sb]move (10) steps[/sb] ブロックを使用して前方に移動します。

オプション

snapblocks の描画方法を変更するためのいくつかの設定が用意されています。

  • ブロックスタイル
  • ブロックスケール
  • シマ模様(ゼブラ)の着色
  • ブロックの折り返し
  • スペースの表示
  • サンタ帽

多くのオプションは snapblocks スニペット内でも使用可能です。

[snapblocks blockStyle="snap-flat" wrap="true" wrapSize=100 zebra="true" showSpaces="false" santa="true"]
when flag clicked
if <[] = []> {
  forever {
    run ({} @addInput) with inputs [Hello world] @delInput @verticalEllipsis @addInput
  }
}
[/snapblocks]

デフォルトパラメータを使用してブロックスタイルを設定することもできます。

[snapblocks="snap-flat"]
move (10) steps
[/snapblocks]

設定

名前 説明
ブロックスタイル デフォルトのブロックスタイル。snapsnap-flatscratch2scratch3、または scratch3-hc を指定できます。
ブロックスケール デフォルトのブロック画像スケール。浮動小数点数を指定する必要があります。
シマ模様(ゼブラ)の着色 複数のブロックが同じ色の場合、より明るい色で交互に表示します。
ブロックの折り返し ブロックが幅広すぎる場合、ブロックの一部を新しい行に折り返します。
スペースの表示 入力内のスペースをドットとして表示します。
Scratchblock エイリアス [scratchblocks] エイリアスを有効にします。

変更履歴

  • 1.5.0
    • snapblocks を v1.10.0 に更新
    • snapblocks ライブラリの読み込み時のエラーを修正(「不正なファイル名」が原因でエラーをスローしていました)
  • 1.4.1
    • 複数行のコードスニペットの引用を修正
    • ブロックの翻訳を正しく検出するように改善
  • 1.4.0
    • snapblocks の引用機能を改善
    • ブロック内のテキストは選択できません(ただし、ブロック全体を選択してスクリプト全体を引用することは可能です)。
  • 1.3.0
    • 設定に「サンタ帽」オプションを追加
    • snapblocks スニペットに santa オプションを追加
    • snapblocks を 1.8.0 に更新
  • 1.2.0
    • [scratchblocks] エイリアスの切り替えを可能に(ついに実装方法を発見しました)。
    • snapblocks を 1.7.0 に更新
  • 1.1.1
    • オーバーフローするスクリプトがスクロール可能であることを確認
    • ツールバーの snapblocks ボタンを使用する際に実際のテキストを表示するように改善
  • 1.1.0
    • snapblocks を 1.6.0 に更新
  • 1.0.0
    • 初期リリース

今後の予定

  • [scratchblocks] 用の個別のデフォルトスタイルを許可する
「いいね!」 13

scratchblocks との互換性に問題があり、Scratch 用の別のプラグインが必要になる可能性はありますか?

もしなければ、ここに、そして GitHub のプラグインの README にも記載することができます。

「いいね!」 1

互換性の問題は、主にドロップダウンメニューや定義ブロックのような、わずかな構文の調整だけだと思います。ほとんどの場合、scratchblocksのコードはsnapblocksとほぼ互換性があります。

scratchblocks用の別のプラグインを用意すべきだと思います。なぜなら、scratch/scratchのMODに関するフォーラムでは、snapblocksがsnapに最適化されているため、snapblocksを使いたくない可能性があるからです(そして、私はscratchのスタイルを磨くことにあまり時間を割いていません)。それに加えて、ツールバーのショートカットをscratchblocksを使用するように切り替える機能を追加していません。

もし誰かがこのプラグインをベースにしてscratchblocksプラグインを作成したいのであれば(私は自分で作成する時間が取れない可能性が高いです)、私が使用したレンダリング関数はscratchblocksのAPIには存在しないため、scratchblocksをそのままドロップするよりも少し手間がかかることを覚えておいてください。

「いいね!」 1

一見したところ、このプラグインを最初の実験(私の環境は学校の設定です)に利用し、必要が生じた場合にのみScratchプラグインに時間を投資することに異論はないようです。

「いいね!」 1

機能リクエスト:「[scratchblocks]エイリアスに対して、ブロックのスタイルを個別に定義できるようにしてほしい。
これにより、ScratchとSnap!の異なるスタイルの要素を簡単に使用できるようになります。」

「いいね!」 2

それは良い考えですね。追加を検討します。

「いいね!」 3

サーバーサイドのロジックは見当たりませんが、これはテーマコンポーネントとして構築した方が良いかもしれませんね?

「いいね!」 3

メッセージパーサーにフックして、タグ内のコンテンツが解析されないようにし、動作を構成するための多くのオプションを提供しています。また、新しい WYSIWYG メッセージ作曲機能のサポートも追加したいと考えていますが、うまく動作させるのに苦労しています。また、フォーラム管理者がすべてのテーマでそれを有効にする必要がないようにしたいと考えています。なぜなら、それは問題や混乱を引き起こす可能性があるからです(以前、そのようなことが起きたのを既に見ています)。

そこで、テーマコンポーネントの機能について私が理解していない何かがあるのでしょうか?それとも、一度グローバルに有効化すればそれで終わりというタイプのものでしょうか?

(あやまって、間違った返信ボタンを押してしまいました @RGJ

プラグインのインストールはこれよりもはるかに手間がかかり、Discourse.org のホストプランでは機能しません。

さらに、ほとんどのフォーラムではアクティブなテーマは一つだけだと考えられます。

テーマコンポーネントには設定を備えることができ、プラグインの JavaScript 側が何でもできることを実行できます。現在のプラグインの状態では、機能の喪失はありません。

「いいね!」 2

リポジトリをプラグインディレクトリにクローンするだけではないでしょうか?それはそれほど面倒だとは思いません。ただし、Discourse のホストプランでは動作しないという点は妥当です。

このプラグインが作られたフォーラムは例外です。ただ、今確認したところ、テーマコンポーネントの設定 UI は私が最後に扱ってから大幅に刷新されているようで、以前より管理しやすくなっているようです。

なるほど、ではテーマコンポーネントとして書き直してみますが、他の用事があるため、すぐには着手できないかもしれません。

「いいね!」 1

すべての管理者がコマンドラインへのアクセス権を持っているわけではなく、持っていたとしてもそれに精通しているとは限りません。

また、再構築が必要であり、それは即座に行われるものではなく、副作用が生じたり、潜在的に問題を引き起こしたりする可能性があります。

プラグインの更新にも再構築が必要ですが、テーマコンポーネントの更新はボタンをクリックするだけで済みます。

「いいね!」 2

バックエンドのロジックが実際にはないため、後で私が挑戦してみるかもしれません。

「いいね!」 3

それは助かります。Discourse について、私よりも詳しい知識をお持ちだと推測します(このプラグインは、他のプラグインを読みながら、主にハックして組み立てたものです)。