林檎の木の下で

iPhoneアプリやwebサービスの紹介など。ノンプログラマー、ただの主婦が奮闘してます。

【ノンプログラマーが作るTextwellアクション】その1 使われる関数とオブジェクト

      2015/07/06

【ノンプログラマーが作るTextwellアクション】その1 使われる関数とオブジェクトhttps---www.pakutaso.com-assets_c-2015-06-PAK85_coding15095904-thumb-1000xauto-18356

こんにちは、sakurako(@0518sakurako)です。

最近Javascriptベースのアクションを使用できるメモアプリTextwellを使う頻度が多くなってきました。

Textwellのアクションはネットで調べるとたくさんの方が自作していてとても便利なものがたくさんあります。

ただやっぱり色々と使っていると「こんなアクション欲しいなあ」とか「このアクションのここがどうにかならないかなあ」という点が出てきます。

ということで自分で作ってみることができないか試してみることにしました。

スポンサーリンク

TextwellのアクションはJavascriptベースなんですが、引数とか関数とか独自のものもあります。

とりあえず公式サイトのリファレンスをGoogle翻訳を駆使しながら自分なりに解釈してみました。

一部間違っているところがあるかもしれませんが、随時直していく予定です。気になった方、コメントいただけると助かります。

公式サイト→Textwell;Action Scripting Reference

Textwell

360円
(2015.06.25時点)
posted with ポチレバ

 

Textwellで使用されるオブジェクト一覧

    • T.text
      メインテキスト画面に入力されているテキスト全体。文字列をとる。
    • T.whole
      選択範囲がない場合はテキスト全体、選択範囲がある場合は選択範囲内の文字列。
    • T.current
      選択範囲がある場合は選択範囲内、選択範囲がない場合は今カーソルがある行の文字列。
    • T.range
      “range object”として現在選択されているオブジェクト。
      ※range objectとは
      { loc: [location], len: [length] }
      ‘loc’: 数 ‘len’: 数
      range objectにはlocとlenの2つのプロパティがあります。例えばメインテキストビューでテキストの初め(location0)から5文字を選択する場合にはT.rangeは{ loc: 0, len: 5 }となります。もしカーソルが3文字目と4文字目の間にあって選択範囲がない場合はT.rangeは{ loc: 3, len: 0 }となります。
    • T.wholeRange
      range objectとしてT.rangeの範囲を示します。選択範囲がない場合はオブジェクト全体、選択範囲がある場合はT.rangeと同様の値を取ります。
    • T.currentRange
      T.currentの範囲を示します。選択範囲がない場合は現在の行の範囲をとり、選択範囲がある場合はT.rangeと同様の値を取ります。
    • T.selectedText
      現在選択されているテキスト。選択範囲がない場合は空の文字列になります。
    • T.pboard
      クリップボード内のテキスト
    • T.data
      T.setData()関数で設定されたデータ
    • T.device
      iPhoneとかiPadとかiPod touchとかMacといった現在のデバイスを示す。
    • T.line( index ) index:数 戻り値:文字列
      指定したインデックスの行に含まれるテキスト文字列を戻り値として返します。例えばT.line(2)はメインテキストビューの2行目のテキストを返します。
    • T.lines( fromIndex, toIndex ) 戻り値:文字列 fromIndex:数 toIndex:数
      T.lines()はfromIndexとtoIndexの間の行に含まれているテキスト文字列を返します。例えばT.lines(2,4)であれば2行目から4行目までのテキスト文字列を返します。またtoIndexがnullの場合は最後の行を示します。例えばT.lines(2,null)は2行目から最後の行までのテキスト文字列を変えします。
    • T.char( index )
      T.char()はコンテンツ全体の指定された単一の文字を返します。例えばT.char( 2 )だと全体のテキストビューの2番めの文字を返します。
    • T.chars( fromIndex, toIndex )
      T.charsはfromIndexからtoIndexで示された範囲内のテキスト文字を返します。例えばT.chars( 2,4 )は2番めから4番目の文字列を返します。nullは最後までを意味するのでT.chars( 2,null )は2番めからコンテンツの最後の文字までを返します。
    • T.title( title )
      ナビゲーションバーに表示されているドキュメントタイトルを返します。
    • T.translucent( bool, callbackFn )
      T.translucentはそのコードが内蔵ブラウザのトランスルーセントのパラメータを示します。bool値はtrueかfolseを取り、trueの場合は内蔵ブラウザでトランスルーセントをオンにします。 関数は非同期的でトランスルーセント終了後に何が起こるかをcallbackFnで設定します。
      ※トランスルーセント、よくわからないんですよね。公式サイトのトランスルーセントの説明部分では、Textwellの内蔵ブラウザであるweb viewには”見える”タイプのビューと”半透明の”ビューが用意されていると書かれてます。トランスルーセントがオンだと”半透明の”ビューが採用されるらしい。
    • T.setData( name, value, callbackFn )
      T.dataの設定下でいくつかのカスタムデータを設定します。例えばT.setData( ‘name’, ‘John’ ); つまりT.dataのメンバーとして{ ‘name’: ‘John’ }というオブジェクトを設定した場合、T.data[ ‘name’ ]と書いたらJohnという名前を取得することができます。このデータを取得した後にどんな動きをするのかをcallbackFnで設定します。
    • T.closelets( arrayOfCloseletObject, callbackFn )
      T.closelets()はユーザーが内蔵ブラウザの閉じるボタンを押した時に実行するオプション機能を登録します。 もし(closelets)でいくつかの機能が登録されている場合はユーザーが閉じるボタンを押した時に選択が可能です。また機能を使わないという選択もできます。arrayOfCloseletObjectはオブジェクトの配列で、title、fn、argの3つが必要です。
      title ; 文字列 fn ; 関数 arg ; オブジェクト。JSON形式可”
      titleはcloseletメニューのラベルとなります。fnはユーザーがcloseletメニューからそのcloseletを選択した場合に実行される関数です。argは命令が実行された時にfnに説明を与えます。 closelets内ではT()の機能を実行するために内蔵ブラウザを閉じる必要があります。もし閉じられないのであればTextwellはT()機能が実行された3秒後に強制的に内蔵ブラウザを閉じます。また完了したら自動的にx-callbackが実行されます。
    • T.loadlets( arrayOfLoadletObject, callbackFn )
      T.loadletsは内蔵ブラウザがロードされた時に実行される機能のセットです。もしT.loadletsの機能が複数登録されている場合は読み込み完了時に選択することができます。arrayOfCloseletObjectはオブジェクトの配列でtitle、fn、argの3つのキーを持ちます。
      ‘title’: 文字列 ‘fn’: 機能 ‘arg’: JSONによってシリアライズ化されたオブジェクト
      titleはloadletメニューのボタンのラベル。fnはそのメニューを選んだ時に実行される機能。argは実行された時にfnに引き渡される因数です。
    • T.copy( text, callbackFn )
      textをペーストボードにコピーします。コピーが完了したら何を行うべきかをcallbachFnで設定する必要があります。
    • T.urlScheme( url )
      urlで示されたurlを開きます。これはOSレベルで行われるので特定のurlを記入したらSafariが開きます。動作完了後の挙動は設定されていないので、もし内蔵ブラウザを閉じたいのであれば次のセクションで述べられているT( ‘urlScheme’ )を使用する必要があります。
    • T.request( settingsObject )
      settingsObjectはJSONとしてシリアル化できるオブジェクト。 T.request()はアプリケーションのネガティブメソッドによって非同期URL要求を行います。なぜならTextwellの内蔵ブラウザではローカル環境でのJavascriptが許されていないので、WebAPIsやXHRを使用したオンラインデータにアクセスすることができません。しかしT.request()を使うことで非同期的にURLを要求することができ、Ajaxを動かすようなアクションを使った結果を得ることができます。さらにXML HttpRequestとは異なりクロスドメインポリシーは要求に適応されません。
      T.request()は一つの引数のみを取ります。settingObjectという引数はurl、type、data、info、callbackという5つのメンバーからなります。urlには特定のurlが入ります。typeにはGETかPOSTが入ります。特に指定しないのであればGETの方法を取ります(GETはデータを受け取るというコマンド、POSTはデータを渡すコマンドです)。dataはサーバーに送るオブジェクトです。これは問い合わせ文字列に変換されGETで要求されたURLに追加されます(APIを使用する場合はAPIキーになります)。オブジェクトにはクエリパラメータとして連続させることができ、単一階層のキーもしくはバリュー値でなければなりません。バリュー値は文字列、数字、ブール値を取ることができます。callbackはサーバーが応答した後に実行される関数です。callbackは因数として応答オブジェクトを取ることによって実行されます。あなたはそれがサーバーから応答したデータを使用するように解析するでしょう。infoはcallback関数に必要に応じて渡されるオブジェクトです。応答したオブジェクトをinfoで規定されたキーでcallbackオブジェクトにアクセスすることができます。それはinfoオブジェクト内の変数はリファレンスによることの代わりにバリュー値によって渡されるので、閉鎖された外の他のオブジェクトによって予期しない変数の変化が内容にするためです。
      レスポンスオブジェクトはstatus、 responseText、infoの三種類があります。statusはHTTPステータスコードです。いつもあなたはそれが200かそうでないか、つまり成功か失敗かをチェックしなくてはいけません。responseTextはサーバーから得られる実際のデータです。infoは受け取ったオブジェクトにつけられる特定のオブジェクトです。
      ※最近のバージョンアップで使えるようになった機能。オンラインデータの取り込みができます。APIツールを使う場合であればurlにAPIのurlを指定し、dataにAPIキーを指定します。

T() function

前述のとおりあなたはあなたのコードから内蔵ブラウザを閉じたいときT() functionを実行する必要があります。 T() functionは通常2つの引数を取ります。

T( commandName, arg ); “commandName:文字列 arg:特定の名前のある特性を持つオブジェクト”
T()functionはコマンド名によって規定されます。多くのコマンド名はTextwellに”email,” “tweet,” “timeStamp,”といった組み込みオブジェクトが用意されています。それらは一般的な目的のために用意されていますが、カスタムアクションを作ることもできます。 それぞれのコマンド名はT()functionの第二引数である引数オブジェクト内の特定キーが必要です。

  • urlScheme
    T( ‘urlScheme’, { url: [URL], option: [name of option (optional)] } ); ‘url’: 文字列 ‘option’: 文字列”
    このコマンドは内蔵ブラウザを閉じた後、指定されたURLを開こうとします。URLは内蔵ブラウザではなくOS単位で処理されます。例えば、もし特定のURLを開きたいのであれば内蔵ブラウザではなくSafariが起動します。またお使いのOS環境下で使用可能なURLスキームを実行することができます。
  • error
    T( ‘error’, { title: [error title], message: [error message] } ); ‘title’: 文字列 ‘message’: 文字列”
    このコマンドは内蔵ブラウザを閉じた後にエラーダイアログを表示します。titleにはダイアログのタイトルを、messageにはダイアログに表示させるメッセージを入れてください。
  • done
    T( ‘done’, { option: [name of option (optional)], nextAction: [title of next action (optional)] } ); ‘option’: 文字列 ‘nextAction’: 文字列”
    このコマンドは単に内蔵ブラウザを閉じます。
  • replace
    T( ‘replace’, { text: [text to replace with], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列”
    このコマンドは内蔵ブラウザを閉じて特定のテキストをもつメインテキスト画面に置き換えます。
  • replaceWhole
    T( ‘replaceWhole’, { text: [text to replace with], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列”
    このコマンドは内蔵ブラウザを閉じて、選択範囲がない場合はメインのテキスト画面にテキスト全体を置き換えます。選択範囲がある場合は選択したテキストを指定したテキストに置き換えます。
  • replaceCurrent
    T( ‘replaceCurrent’, { text: [text to replace with], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列”
    このコマンドは内蔵ブラウザを閉じて、選択範囲がない場合指定された文字に現在の行を置き換えます。選択範囲がある場合は選択したテキストの代わりに指定したテキストに置き換えます。
  • insert
    T( ‘insert’, { text: [text to insert], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列”
    このコマンドは内蔵ブラウザを閉じて、メインのテキスト画面の現在のカーセル位置に指定されたテキストを挿入します。メインのテキスト画面で選択された時は選択したテキストを指定されたテキストに置き換えます。
  • add
    T( ‘add’, { text: [text to add], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列”
    このコマンドは内蔵ブラウザを閉じて、特定のテキストを既存のテキストの最後に追加します。
  • replaceRange
    T( ‘replaceRange’, { text: [text to replace with], replacingRange: { loc: [location of replacing range], len: [length of replacing range] }, selectingRange: { loc: [location of selecting range], len: [length of selecting range] }, nextAction: [title of next action (optional)] } ); ‘text’: String [ ‘replacingRange’ ][ ‘loc’ ]: 数字 [ ‘replacingRange’ ][ ‘len’ ]: 数字 [ ‘selectingRange’ ][ ‘loc’ ]: 数字[ ‘selectingRange’ ][ ‘len’ ]: 数字 ‘nextAction’: 文字列
    このコマンドは複合体を置き換えます。テキストを挿入することに加えて置換される範囲、交換後に選択される範囲を指定することができます。例えばもしメインのテキスト画面に”Hello, world.”の文字列があった場合、次の命令を書くことで”Hello, Textwell”に変更され、文字列全体を選択します。 “T( ‘replaceRange’, { text: ‘Textwell’, replacingRange: { loc: 7, len: 5 }, selectingRange: { loc: 0, len: 16 } } );
  • copy
    T( ‘copy’, { text: [text to copy], nextAction: [title of next action (optional)] } ); ‘text’: 文字列 ‘nextAction’: 文字列
    このコマンドは指定したテキストをコピーしクリップボードに格納します。

option property

いくつかのコマンドはその引数オブジェクト内の “option” propertyを受け入れます。

option propertyはあるアクションが実行された後、メインテキスト画面のコンテンツをTextwellのコピーやカット、削除を特定する方法です。

  • ‘none’ : 何もしない
  • ‘copyWhole’ : テキスト全部か選択範囲をコピーする。
  • ‘copyCurrent’ : 現在の行か選択範囲のテキストをコピーする。
  • ‘cutWhole’ : テキスト全部か選択範囲をカットする。
  • ‘cutCurrent’ : 現在の行か選択範囲のテキストをカットする。
  • ‘clearWhole’ : テキスト全部か選択範囲を削除する。
  • ‘clearCurrent’ : 現在の行か選択範囲のテキストを削除する。
  • ‘clearAll’ : テキスト全体を削除する。
    例えばこれは”Clear Text” がプリインストールされたソースです。
    “T( ‘done’, { option: ‘clearAll’ } );” これは”done”のコマンドによって内蔵ブラウザが閉じられた後、”clearAll”のコマンドで全てのテキスト画面が削除されたことを意味します。

nextAction property

いくつかのコマンドはその引数オブジェクト内で “nextAction”を受け入れます。

もしnextAction propertyが指定されている場合、Textwellは初めのアクションが終わった直後にnextAction propertyで指定されたアクションを実行しようとします。

もし同じタイトルのアクションが複数あった時にはより最近使用されたアクションを実行しようとします。

これを基本にアクションを作っていく。

長くなりましたが以上が公式サイトにかかれていることです。

この後にチュートリアルが続いています。

次回はこの関数とオブジェクトを使ってアクションを作っていこうと思います。

 - iPhoneアプリ ,

   

スポンサードリンク

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事