Sha256: 01a2b9a5c095161fcef54b88f9be5359dd4bcb51f2414b633e1d94b67380ff56

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

require_relative './syntax_builder_base'

module JsGenerator
  module SyntaxBuilder
    class WithNamespace < SyntaxBuilderBase
      def action_namespace
        "window.#{top_level_js_namespace}.#{namespace.capitalize}.#{model_name.capitalize.pluralize}.#{action_name.capitalize}"
      end

      def script_for_append
        <<~TEXT
          #{define_namespace(custom_namespace)}
          #{define_namespace(model_namespace)}
          import #{import_name} from '#{import_path}';
          #{action_namespace} = #{action_namespace} || {};
          #{action_namespace} = #{import_name};
        TEXT
      end

      private

      def custom_namespace
        "window.#{top_level_js_namespace}.#{namespace.capitalize}"
      end

      def model_namespace
        "window.#{top_level_js_namespace}.#{namespace.capitalize}.#{model_name.capitalize.pluralize}"
      end

      def import_path
        "./views/#{namespace}/#{model_name.pluralize}/#{action_name}"
      end

      def import_name
        "#{namespace.capitalize}#{model_name.capitalize.pluralize}#{action_name.capitalize}"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
js_generator-0.1.4 lib/js_generator/syntax_builder/with_namespace.rb
js_generator-0.1.3 lib/js_generator/syntax_builder/with_namespace.rb
js_generator-0.1.2 lib/js_generator/syntax_builder/with_namespace.rb