flowcation 0.2.18 → 0.2.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/exe/flowcation +3 -1
- data/lib/flowcation.rb +15 -0
- data/lib/flowcation/assets.rb +20 -2
- data/lib/flowcation/file_writer.rb +2 -1
- data/lib/flowcation/layout_helper.rb +4 -0
- data/lib/flowcation/processor.rb +4 -0
- data/lib/flowcation/render.rb +5 -1
- data/lib/flowcation/substitution.rb +32 -8
- data/lib/flowcation/substitutions.rb +2 -1
- data/lib/flowcation/version.rb +1 -1
- data/lib/generators/flowcation/generate/config_generator.rb +2 -1
- data/lib/generators/flowcation/generate/templates/public.yml +6 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2b5f6400fc880f4774beb7b2cfd623f257cd6a3
|
4
|
+
data.tar.gz: d9174f5b83e5385b78e387eb841139327926f354
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '078ccdfb5abd001c67da8e954cef22e18ff1c22705cd3dd5f967c5836860be2085daffb337a6109488c8d196aba4a47acd3d47ad67878f13cefcafee5bd6c0e1'
|
7
|
+
data.tar.gz: 94ccc5d2abf988099eba38a99c0bb5a32304c86546f50d29b7336cf8122d665a4c5026c45240a7e5e0bbfae441d50b73ebb64818ad13905aad36073bf9508f23
|
data/Gemfile.lock
CHANGED
data/exe/flowcation
CHANGED
@@ -40,7 +40,9 @@ rescue Exception => e
|
|
40
40
|
return 1
|
41
41
|
end
|
42
42
|
|
43
|
-
if config
|
43
|
+
if config
|
44
|
+
Flowcation::set_user_object name: 'helper', config: config, path: File.dirname(config_path)
|
45
|
+
Flowcation::set_user_object name: 'processor', config: config, path: File.dirname(config_path)
|
44
46
|
Flowcation::generate config
|
45
47
|
Flowcation::Runtime.instance.write_files
|
46
48
|
end
|
data/lib/flowcation.rb
CHANGED
@@ -21,10 +21,25 @@ require 'flowcation/overwrite_exception'
|
|
21
21
|
require 'flowcation/block_not_found_exception'
|
22
22
|
require 'flowcation/substitution_not_found_exception'
|
23
23
|
require 'flowcation/assets'
|
24
|
+
require 'flowcation/layout_helper'
|
25
|
+
require 'flowcation/processor'
|
24
26
|
|
25
27
|
module Flowcation
|
26
28
|
DEFAULT_GENERATED_TEXT = "GENERATED_BY_FLOWCATION"
|
27
29
|
DEFAULT_COMMENT = "<!-- ::comment:: -->"
|
30
|
+
|
31
|
+
def self.set_user_object(name:, config:, path:)
|
32
|
+
if settings = config['flowcation']
|
33
|
+
file = File.join(path, settings[name])
|
34
|
+
if File.exist?(file)
|
35
|
+
existing_classes = ObjectSpace.each_object(Class).to_a
|
36
|
+
require file
|
37
|
+
helper_class = (ObjectSpace.each_object(Class).to_a - existing_classes)[0]
|
38
|
+
Flowcation::Settings.set(name + '_object', helper_class.new)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
28
43
|
def self.generate(config)
|
29
44
|
Flowcation::Settings.from_config(config['flowcation'])
|
30
45
|
Flowcation::Assets.from_config(config['assets'])
|
data/lib/flowcation/assets.rb
CHANGED
@@ -3,7 +3,7 @@ module Flowcation
|
|
3
3
|
|
4
4
|
def self.from_config(config={})
|
5
5
|
config&.each do |name, options|
|
6
|
-
options['folders']
|
6
|
+
options['folders']&.each do |path, asset_folder_name|
|
7
7
|
asset_folder_path = File.join(options['output'], asset_folder_name)
|
8
8
|
FileUtils.mkdir_p(asset_folder_path)
|
9
9
|
asset_folder = File.new(asset_folder_path)
|
@@ -11,7 +11,25 @@ module Flowcation
|
|
11
11
|
source: File.join(options['input'], path),
|
12
12
|
target: asset_folder
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
|
+
if processor = Settings.get('processor_object')
|
16
|
+
options['post-process']&.each do |asset_path, file_process|
|
17
|
+
asset_folder_path = File.join(options['output'], asset_path)
|
18
|
+
file_process.each do |file_name, process_method|
|
19
|
+
#file = File.new(File.join(asset_folder_path, file_name))
|
20
|
+
path = File.join(asset_folder_path, file_name)
|
21
|
+
puts "Post Process #{File.join(asset_folder_path, file_name)}"
|
22
|
+
lines = IO.readlines(path).map do |line|
|
23
|
+
processor.send(process_method, line)
|
24
|
+
end
|
25
|
+
File.open(path, 'w') do |file|
|
26
|
+
file.puts lines
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
options['single-files']&.each do |file_name|
|
15
33
|
output_folder_path = File.join(options['output'])
|
16
34
|
FileUtils.mkdir_p(output_folder_path)
|
17
35
|
output_folder = File.new(output_folder_path)
|
@@ -15,6 +15,7 @@ module Flowcation
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def write_files
|
18
|
+
# todo rescue/finally close file
|
18
19
|
self.class.file_writer_collections.each do |writables|
|
19
20
|
send(writables).each do |writeable|
|
20
21
|
file_name = writeable.path
|
@@ -26,7 +27,7 @@ module Flowcation
|
|
26
27
|
c = add_generated_comment c
|
27
28
|
File.write(file, c.encode(cr_newline: true))
|
28
29
|
else
|
29
|
-
STDERR.puts "File #{
|
30
|
+
STDERR.puts "File #{file_name} not generated by flowcation. Use -f to overwrite or add Setting 'force-overwrite: true' to configuration yaml file entry 'flowcation:'"
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
data/lib/flowcation/render.rb
CHANGED
@@ -1,27 +1,51 @@
|
|
1
1
|
module Flowcation
|
2
2
|
class Substitution
|
3
3
|
attr_reader :name, :xpath, :type, :value
|
4
|
-
def initialize(name, xpath, type, value, key)
|
5
|
-
@name, @xpath, @type, @value, @key = name, xpath, type, value, key
|
4
|
+
def initialize(name, xpath, type, value, key, use_helper)
|
5
|
+
@name, @xpath, @type, @value, @key, @use_helper = name, xpath, type, value, key, use_helper
|
6
|
+
end
|
7
|
+
def value(node)
|
8
|
+
if @use_helper && helper = Settings.get('helper_object')
|
9
|
+
helper.send(@value, node)
|
10
|
+
else
|
11
|
+
@value
|
12
|
+
end
|
6
13
|
end
|
7
14
|
def apply(doc)
|
15
|
+
# todo Refactor to SubstitutionType class with ContentSubstitution, AttributeSubstitution...
|
16
|
+
|
17
|
+
# todo Better type names. More Like Targets in Stimulus? each->attribute
|
18
|
+
# Even Helpers could be included in type: each-replace->LayoutHelper#image_tag
|
19
|
+
|
8
20
|
element = doc.at_xpath(@xpath)
|
9
21
|
raise SubstitutionNotFoundException.build(xpath: @xpath, name: @name) unless element
|
10
22
|
case @type
|
11
23
|
when 'content'
|
12
|
-
doc.at_xpath(@xpath).content = @
|
24
|
+
doc.at_xpath(@xpath).content = value(doc.at_xpath(@xpath))
|
25
|
+
when 'content_collection'
|
26
|
+
doc.xpath(@xpath).each do |node|
|
27
|
+
node.content = value(node)
|
28
|
+
end
|
13
29
|
when 'attribute'
|
14
|
-
doc.at_xpath(@xpath).attributes[@key].value = @
|
30
|
+
doc.at_xpath(@xpath).attributes[@key].value = value(doc.at_xpath(@xpath))
|
31
|
+
when 'attribute_collection'
|
32
|
+
doc.xpath(@xpath).each do |node|
|
33
|
+
node.attributes[@key].value = value(node)
|
34
|
+
end
|
15
35
|
when 'replace'
|
16
|
-
doc.at_xpath(@xpath).replace Nokogiri::XML::Text.new(@
|
17
|
-
when '
|
18
|
-
|
19
|
-
|
36
|
+
doc.at_xpath(@xpath).replace Nokogiri::XML::Text.new(value(doc.at_xpath(@xpath)), doc.document)
|
37
|
+
when 'replace_each'
|
38
|
+
doc.xpath(@xpath).each do |node|
|
39
|
+
node.replace Nokogiri::XML::Text.new(value(node), doc.document)
|
40
|
+
end
|
20
41
|
when 'replace_collection'
|
21
42
|
doc.xpath(@xpath).first.replace Nokogiri::XML::Text.new(@value, doc.document)
|
22
43
|
doc.xpath(@xpath).each do |node|
|
23
44
|
node.remove if node.is_a? Nokogiri::XML::Element
|
24
45
|
end
|
46
|
+
when 'append'
|
47
|
+
puts "APPEND #{doc.at_xpath(@xpath).class}"
|
48
|
+
doc.at_xpath(@xpath).after Nokogiri::XML::Text.new(value(doc.at_xpath(@xpath)), doc.document)
|
25
49
|
end
|
26
50
|
doc
|
27
51
|
end
|
data/lib/flowcation/version.rb
CHANGED
@@ -7,7 +7,8 @@ module Flowcation
|
|
7
7
|
desc "This generator creates a basic rails.yml file at config/flowcation"
|
8
8
|
source_root File.expand_path("../templates", __FILE__)
|
9
9
|
def copy_config_file
|
10
|
-
copy_file "rails.yml",
|
10
|
+
copy_file "rails.yml", "config/flowcation/rails.yml"
|
11
|
+
copy_file "public.yml", "config/flowcation/public.yml"
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flowcation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthias Hennemeyer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -108,8 +108,10 @@ files:
|
|
108
108
|
- lib/flowcation/callbacks.rb
|
109
109
|
- lib/flowcation/file_writer.rb
|
110
110
|
- lib/flowcation/layout.rb
|
111
|
+
- lib/flowcation/layout_helper.rb
|
111
112
|
- lib/flowcation/overwrite_exception.rb
|
112
113
|
- lib/flowcation/partial.rb
|
114
|
+
- lib/flowcation/processor.rb
|
113
115
|
- lib/flowcation/registry.rb
|
114
116
|
- lib/flowcation/render.rb
|
115
117
|
- lib/flowcation/runtime.rb
|
@@ -120,6 +122,7 @@ files:
|
|
120
122
|
- lib/flowcation/template.rb
|
121
123
|
- lib/flowcation/version.rb
|
122
124
|
- lib/generators/flowcation/generate/config_generator.rb
|
125
|
+
- lib/generators/flowcation/generate/templates/public.yml
|
123
126
|
- lib/generators/flowcation/generate/templates/rails.yml
|
124
127
|
homepage: http://www.flowcation.com
|
125
128
|
licenses:
|