handlebarsjs 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ // Is this name ok? would compile_and_process_template be better?
2
+ // Also, should this be at the top level namespace?
3
+
4
+ function compile_template(template) {
5
+ return Handlebars.compile(template);
6
+ }
7
+
8
+ function process_template(template, data) {
9
+ const compiled_template = Handlebars.compile(template);
10
+ return compiled_template(data);
11
+ }
@@ -0,0 +1,3 @@
1
+ Handlebars.registerHelper('loud', function (input) {
2
+ return input.toUpperCase()
3
+ })
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handlebarsjs
4
+ # Wraps MiniRacer snapshot and provides clean API
5
+ class SnapshotBuilder
6
+ attr_reader :scripts
7
+
8
+ def initialize
9
+ @scripts = []
10
+ end
11
+
12
+ def add_handlebars_js
13
+ add_script('handlebars', 'library', path: Handlebarsjs::JAVASCRIPT_PATH)
14
+ end
15
+
16
+ def add_library(name, script: nil, path: nil)
17
+ add_script(name, 'library', script: script, path: path)
18
+ end
19
+
20
+ def register_helper(name)
21
+ add_script(name, 'helper', script: "Handlebars.registerHelper('#{name}', ruby_#{name})")
22
+ end
23
+
24
+ def script
25
+ scripts.map { |script| "# #{script[:type]} - #{script[:name]}\n#{script[:script]}" }.join("\n\n")
26
+ end
27
+
28
+ def build
29
+ MiniRacer::Snapshot.new(script)
30
+ end
31
+
32
+ private
33
+
34
+ def add_script(name, type, script: nil, path: nil)
35
+ raise Handlebarsjs::Error, 'script or path is required' if script.nil? && path.nil?
36
+ raise Handlebarsjs::Error, 'script and path are mutually exclusive' if script && path
37
+
38
+ script ||= File.read(path)
39
+ add_script_item(name, type, script, path)
40
+ end
41
+
42
+ def add_script_item(name, type, script, path = nil)
43
+ scripts << {
44
+ name: name,
45
+ type: type,
46
+ script: script,
47
+ path: path
48
+ }
49
+ end
50
+ end
51
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Handlebarsjs
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/handlebarsjs.rb CHANGED
@@ -1,15 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'mini_racer'
3
4
  require_relative 'handlebarsjs/version'
5
+ require_relative 'handlebarsjs/snapshot_builder'
6
+ require_relative 'handlebarsjs/handlebars'
4
7
 
5
8
  module Handlebarsjs
9
+ JAVASCRIPT_PATH = 'lib/handlebarsjs/javascript/handlebars-4.7.7.js'
10
+
6
11
  # raise Handlebarsjs::Error, 'Sample message'
7
12
  Error = Class.new(StandardError)
8
13
 
9
14
  # Your code goes here...
10
15
  end
11
16
 
12
- if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
17
+ if ENV.fetch('KLUE_DEBUG', 'false').downcase == 'true'
13
18
  namespace = 'Handlebarsjs::Version'
14
19
  file_path = $LOADED_FEATURES.find { |f| f.include?('handlebarsjs/version') }
15
20
  version = Handlebarsjs::VERSION.ljust(9)
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "handlebarsjs",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "handlebarsjs",
9
- "version": "0.1.1",
9
+ "version": "0.1.2",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "handlebarsjs",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "handlebarsjs GEM wraps the handlebars.js library and provides ruby/javascript interoperability",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handlebarsjs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-17 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_log
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: mini_racer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: " handlebarsjs GEM wraps the handlebars.js library and provides ruby/javascript
28
42
  interoperability\n"
29
43
  email:
@@ -49,9 +63,20 @@ files:
49
63
  - Rakefile
50
64
  - bin/console
51
65
  - bin/setup
66
+ - docs/domain_model.drawio
67
+ - docs/domain_model.json
68
+ - docs/domain_model.svg
69
+ - docs/domain_model_custom.drawio
52
70
  - docs/project-plan/project.drawio
53
71
  - docs/project-plan/project_in_progress.svg
54
72
  - lib/handlebarsjs.rb
73
+ - lib/handlebarsjs/api.rb
74
+ - lib/handlebarsjs/handlebars.rb
75
+ - lib/handlebarsjs/helpers/comparison/and.rb
76
+ - lib/handlebarsjs/javascript/handlebars-4.7.7.js
77
+ - lib/handlebarsjs/javascript/handlebars-api.js
78
+ - lib/handlebarsjs/javascript/handlebars-helpers.js
79
+ - lib/handlebarsjs/snapshot_builder.rb
55
80
  - lib/handlebarsjs/version.rb
56
81
  - package-lock.json
57
82
  - package.json