Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

任意の文字列を変数化する方法について #1005

Closed
mozoko opened this issue May 7, 2018 · 5 comments
Closed

任意の文字列を変数化する方法について #1005

mozoko opened this issue May 7, 2018 · 5 comments

Comments

@mozoko
Copy link

mozoko commented May 7, 2018

任意の文字列を変数化して、後から呼び出すことはできるでしょうか。
例えば、 hello = "こんにちは" などと事前に定義しておき、
その後、文章中のどこかで変数helloを呼び出すと、その部分に "こんにちは" が入るようにしたいと思っています。

ドキュメントは一通り目を通したつもりですが、見落としていたらすいません。
よろしくお願いします。

@mozoko
Copy link
Author

mozoko commented May 7, 2018

自己解決しました。こちらで対応できました。
#39

@mozoko mozoko closed this as completed May 7, 2018
@kdmsnr
Copy link
Collaborator

kdmsnr commented May 7, 2018

個人的にはcsvで対応表を作って、インライン記法の w を割り当ててます。標準機能であったほうがいいですかねえ。

@mozoko
Copy link
Author

mozoko commented May 8, 2018

個人的にはcsvで対応表を作って、インライン記法の w を割り当ててます。

すいません、これは、どのような方法でしょうか。

@kdmsnr
Copy link
Collaborator

kdmsnr commented May 9, 2018

review-ext.rb に Builder#inline_w を定義しています。words.csv に hello, こんにちは と書いて @<w>{hello} とすると こんにちは になる感じです。

@kmuto
Copy link
Owner

kmuto commented May 9, 2018

review-ext.rbのエッセンスを切り出してみました(実際の@kdmsnrさんのではもうちょっといろいろやっていますが)。

module ReVIEW
  require 'csv'
  module BuilderOverride
    Compiler.definline :w

    def builder_init(*args)
      super
      @dictionary = {}
      CSV.foreach('words.csv') do |row|
        @dictionary[row[0]] = row[1]
      end
    end

    def inline_w(word)
      translated = @dictionary[word]
      raise unless translated
      translated
    rescue
      "★#{word}★"
    end
  end

  class Builder
    prepend BuilderOverride
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants