Sha256: 3328d69e4044aecc2908aac2b7798b9ef2e674e79c1c7020e1ee3f4f3b8b1768

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require_relative 'template'

module Immutabler
  module Template
    class BodyTemplate < BaseTemplate
      attr_accessor :name, :models

      def initialize(name, models)
        self.template_file = File.expand_path("#{__dir__}/../../../templates/body_template.hbs")
        self.name = name
        self.models = models

        helper(:dict) do |context, arg, block|
          body = "@{\n"

          if arg
            body << arg.map{|m|
              "@\"#{m.destination_name}\" : @\"#{m.origin_name}\""
            }.join(",\n")
          end

          body << "\n};"
        end

        helper(:enum_mapping_dict) do |context, arg, block|
          body = "@{\n"

          if arg
            body << arg.map{|m|
              "@\"#{m.origin_name}\" : @(#{m.destination_name})"
            }.join(",\n")
          end

          body << "\n};"
        end

        helper(:init_with_builder) do |context, arg, block|
          if arg[:base_immutable]
            "    self = [super initWithBuilder:builder modelVersion:modelVersion];\n"
          else
            "    self = [super init];\n"
          end
        end
      end

      def render
        template.call(models: models, name: name)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
immutabler-0.1.2 lib/immutabler/template/body_template.rb