Sha256: 31a7b3622c295134ec90a79b6092d9191828a103c2e3a5751e2426fbf8fc366d

Contents?: true

Size: 1.26 KB

Versions: 9

Compression:

Stored size: 1.26 KB

Contents

require "erb"
require "ykutils"

module Arxutils_Sqlite3
  # スキーマ設定に基づき、テンプレートから変換する
  class Arx
    @field = nil
    # スキーマ設定配列を、テンプレートで参照可能になるように展開する
    def initialize(data, fname)
      # テンプレートファイルへのパス
      @fname = fname

      # スキーマ設定配列
      # スキーマ設定とは以下をキーにもつハッシュである
      # :flist
      # :classname
      # :classname_downcase
      # :items
      #  フィールド名, 型, null許容 の配列
      # :plural
      # :acrecord
      @data = data

      # スキーマ設定の:itemsの値を展開後格納するためのStructクラス
      # @field ||= Struct.new("Field", :name, :type, :null)
      @field ||= Struct.new(:name, :type, :null)

      @data[:ary] = if @data[:items]
                      @data[:items].map { |x| @field.new(*x) }
                    else
                      []
                    end
    end

    # テンプレートファイルを元にした変換結果を返す
    def create
      scope = Object.new
      scope.instance_variable_set(:@data, @data)
      Ykutils::Erubyx.erubi_render_with_template_file(@fname, scope)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
arxutils_sqlite3-0.1.58 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.57 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.56 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.55 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.54 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.53 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.52 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.51 lib/arxutils_sqlite3/arx.rb
arxutils_sqlite3-0.1.50 lib/arxutils_sqlite3/arx.rb