easy_html_generator 1.0.4 → 1.0.5
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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +6 -0
- data/.gitignore +12 -0
- data/.rubocop.yml +18 -0
- data/.travis.yml +14 -0
- data/Gemfile +3 -0
- data/README.md +51 -337
- data/Rakefile +42 -0
- data/config.ru +4 -0
- data/docs/CONFIGURATION.md +84 -0
- data/{CONTRIBUTING.md → docs/CONTRIBUTING.md} +2 -0
- data/docs/GENERATORS.md +210 -0
- data/docs/GETSTARTED.md +92 -0
- data/easy_html_generator.gemspec +54 -0
- data/lib/easy_html_generator/checksum.rb +4 -0
- data/lib/easy_html_generator/config.rb +0 -77
- data/lib/easy_html_generator/generator/base.rb +20 -58
- data/lib/easy_html_generator/generator/combine.rb +9 -19
- data/lib/easy_html_generator/generator/compile/base.rb +51 -0
- data/lib/easy_html_generator/generator/compile/coffee.rb +6 -13
- data/lib/easy_html_generator/generator/compile/haml/helper/activesupport_override.rb +1 -6
- data/lib/easy_html_generator/generator/compile/haml/helper/asset_helper.rb +7 -7
- data/lib/easy_html_generator/generator/compile/haml.rb +20 -45
- data/lib/easy_html_generator/generator/compile/sass.rb +9 -13
- data/lib/easy_html_generator/generator/copy.rb +7 -14
- data/lib/easy_html_generator/generator/delete.rb +4 -13
- data/lib/easy_html_generator/generator/minimize/css.rb +5 -12
- data/lib/easy_html_generator/generator/minimize/html.rb +5 -12
- data/lib/easy_html_generator/generator/minimize/images.rb +6 -20
- data/lib/easy_html_generator/generator/minimize/js.rb +5 -12
- data/lib/easy_html_generator/generator/service/analytics.rb +19 -19
- data/lib/easy_html_generator/generator/service/bower.rb +21 -17
- data/lib/easy_html_generator/generator/service/grunt.rb +12 -11
- data/lib/easy_html_generator/generator/service/sitemap.rb +33 -0
- data/lib/easy_html_generator/generator/structure.rb +2 -6
- data/lib/easy_html_generator/generator.rb +6 -6
- data/lib/easy_html_generator/project.rb +5 -0
- data/lib/easy_html_generator/project_path_resolver.rb +57 -0
- data/lib/easy_html_generator/rack_dispatcher.rb +1 -1
- data/lib/easy_html_generator/version.rb +4 -0
- data/lib/easy_html_generator/workspace.rb +1 -1
- data/lib/easy_html_generator.rb +19 -18
- data/src/demo/assets/styles/app.css.sass +47 -2
- data/src/demo/lib/helper/projecthelper.rb +3 -0
- data/src/demo/project.yml +142 -0
- data/src/demo/views/index/_bower_and_grunt.haml +7 -0
- data/src/demo/views/index/_dry.haml +16 -0
- data/src/demo/views/index/_haml_sass_coffee.haml +11 -0
- data/src/demo/views/index/_inline_coffee_and_sass.haml +43 -0
- data/src/demo/views/index/_sass_mixins.haml +76 -0
- data/src/demo/views/index.html.haml +13 -1
- data/src/demo/views/layout/_assets.javascripts.haml +7 -0
- data/src/demo/views/layout/_assets.metadata.haml +12 -0
- data/src/demo/views/layout/_assets.stylesheets.haml +9 -0
- data/src/demo/views/layout/_footer.haml +3 -0
- data/src/demo/views/layout/_header.haml +1 -0
- data/src/demo/views/layout.haml +8 -4
- data/src/demo/views/plain.html +1 -0
- data/src/shared/assets/styles/mixins/_bootstrap-fixes.sass +12 -0
- data/src/shared/assets/styles/mixins/_headjs-bootstrap-mediaqueries.sass +30 -0
- data/src/shared/project.yml +56 -35
- data/src/template/project.yml +57 -43
- metadata +75 -7
- data/src/demo/views/index/_lore_ipsum.haml +0 -1
@@ -2,11 +2,6 @@
|
|
2
2
|
|
3
3
|
# this module overrides some active support methods for working paths etc.
|
4
4
|
module ActivesupportOverride
|
5
|
-
def stylesheet_link_tag(path, media = 'screen')
|
6
|
-
'<link href="' + path_to_css(path) + '" media="' + media +
|
7
|
-
'" rel="stylesheet" type="text/css" />'
|
8
|
-
end
|
9
|
-
|
10
5
|
def javascript_include_tag(path)
|
11
6
|
'<script src="' + path_to_js(path) + '"></script>'
|
12
7
|
end
|
@@ -24,7 +19,7 @@ module ActivesupportOverride
|
|
24
19
|
'<link rel="' + relation + '" href="' + source + '"' + type + '/>'
|
25
20
|
end
|
26
21
|
|
27
|
-
def
|
22
|
+
def path_to_stylesheet(path, _options = {})
|
28
23
|
return path if external_path?(path)
|
29
24
|
@project.uri_path_to(:styles, path)
|
30
25
|
end
|
@@ -17,14 +17,14 @@ module AssetHelper
|
|
17
17
|
def with_coffee(&block)
|
18
18
|
input = capture_haml(&block)
|
19
19
|
content_tag :script do
|
20
|
-
raw @project.generators.compile_coffee.do_input input
|
20
|
+
raw @project.generators.compile_coffee.do_input! input
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
def with_sass(&block)
|
25
25
|
input = capture_haml(&block)
|
26
26
|
content_tag :style do
|
27
|
-
raw @project.generators.compile_sass.do_input input
|
27
|
+
raw @project.generators.compile_sass.do_input! input
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -43,21 +43,21 @@ module AssetHelper
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def headjs_stylesheet_link_tag(tag, path)
|
46
|
-
headjs_javascript_include_tag(tag,
|
46
|
+
headjs_javascript_include_tag(tag, path_to_stylesheet(path))
|
47
47
|
end
|
48
48
|
|
49
49
|
def inline_stylesheet_link_tag(path)
|
50
50
|
return path if external_path?(path)
|
51
51
|
|
52
52
|
styles_path = @project.dist_path_to(:styles, path)
|
53
|
-
if File.
|
53
|
+
if File.exist? styles_path
|
54
54
|
path = styles_path
|
55
55
|
else
|
56
56
|
path = File.join(@project.dist_path, path)
|
57
57
|
end
|
58
58
|
|
59
59
|
content_tag :style do
|
60
|
-
raw @project.generators.minimize_css.do_input File.read(path)
|
60
|
+
raw @project.generators.minimize_css.do_input! File.read(path)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -65,14 +65,14 @@ module AssetHelper
|
|
65
65
|
return path if external_path?(path)
|
66
66
|
|
67
67
|
scripts_path = @project.dist_path_to(:scripts, path)
|
68
|
-
if File.
|
68
|
+
if File.exist? scripts_path
|
69
69
|
path = scripts_path
|
70
70
|
else
|
71
71
|
path = File.join(@project.dist_path, path)
|
72
72
|
end
|
73
73
|
|
74
74
|
content_tag :script do
|
75
|
-
raw @project.generators.minimize_js.do_input File.read(path)
|
75
|
+
raw @project.generators.minimize_js.do_input! File.read(path)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -1,28 +1,31 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'fileutils'
|
3
2
|
require 'haml'
|
4
|
-
require 'easy_html_generator/generator/base'
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
5
4
|
|
6
5
|
# this generator compiles haml files from src folder and copies them
|
7
6
|
# to the dist folder
|
8
7
|
class EasyHtmlGenerator::Generator::Compile::Haml <
|
9
|
-
EasyHtmlGenerator::Generator::Base
|
8
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
10
9
|
|
11
10
|
require 'easy_html_generator/generator/compile/haml/context'
|
12
11
|
require 'easy_html_generator/generator/compile/haml/layout'
|
13
12
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
def do_input!(input, input_file, *_args)
|
14
|
+
file_name = File.basename input_file
|
15
|
+
scope = file_name.split('.').first
|
16
|
+
context = Context.new(@project, @config, scope)
|
17
|
+
layout = Layout.layout_from_file(@project.src_path_to(:views),
|
18
|
+
input_file, @config.renderer)
|
19
|
+
|
20
|
+
do_input(input, layout, context, scope)
|
21
|
+
|
22
|
+
rescue StandardError => e
|
23
|
+
raise e, "#{e.message} in #{input_file} ", e.backtrace
|
18
24
|
end
|
19
25
|
|
20
|
-
def do_input(input, layout, context, scope
|
21
|
-
# If the file being processed by Haml contains a yield statement,
|
22
|
-
# the block passed to "render" will be called when it's hit.
|
26
|
+
def do_input(input, layout, context, scope)
|
23
27
|
result = layout.render(context, body_class: scope) do
|
24
|
-
|
25
|
-
body = Haml::Engine.new(input, @config.renderer)
|
28
|
+
body = Haml::Engine.new(input, @config.renderer)
|
26
29
|
body.render(context)
|
27
30
|
end
|
28
31
|
|
@@ -31,40 +34,12 @@ class EasyHtmlGenerator::Generator::Compile::Haml <
|
|
31
34
|
EasyHtmlGenerator::Generator::Minimize::Html.compress result
|
32
35
|
end
|
33
36
|
|
34
|
-
def
|
35
|
-
#
|
36
|
-
!File.basename(
|
37
|
+
def file_changed?(file)
|
38
|
+
# regenerate all haml files except imported once
|
39
|
+
!File.basename(file).start_with? '_'
|
37
40
|
end
|
38
41
|
|
39
|
-
def input_to_output_file(
|
40
|
-
super(
|
41
|
-
end
|
42
|
-
|
43
|
-
def generate
|
44
|
-
return unless @config.enabled
|
45
|
-
|
46
|
-
log_running
|
47
|
-
|
48
|
-
FileUtils.mkdir_p dest_path
|
49
|
-
|
50
|
-
walk_files(File.join(src_path, @config.selector)) do |i, o|
|
51
|
-
next unless should_do_file? i
|
52
|
-
|
53
|
-
compile_file i, o
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def compile_file(src, target)
|
58
|
-
file_name = File.basename src
|
59
|
-
scope = file_name.split('.').first
|
60
|
-
context = Context.new(@project, @config, scope)
|
61
|
-
layout = Layout.layout_from_file(@project.src_path_to(:views),
|
62
|
-
src, @config.renderer)
|
63
|
-
|
64
|
-
begin
|
65
|
-
do_file(src, target, layout, context, scope)
|
66
|
-
rescue StandardError => e
|
67
|
-
raise e, "#{e.message} in #{src} ", e.backtrace
|
68
|
-
end
|
42
|
+
def input_to_output_file(input_file, config)
|
43
|
+
super(input_file, config).gsub('.html.haml', '.html')
|
69
44
|
end
|
70
45
|
end
|
@@ -2,12 +2,12 @@
|
|
2
2
|
require 'sass'
|
3
3
|
|
4
4
|
require 'easy_html_generator'
|
5
|
-
require 'easy_html_generator/generator/base'
|
5
|
+
require 'easy_html_generator/generator/compile/base'
|
6
6
|
|
7
7
|
# this generator compiles sass files from src folder and copies them
|
8
8
|
# to the dist folder
|
9
9
|
class EasyHtmlGenerator::Generator::Compile::Sass <
|
10
|
-
EasyHtmlGenerator::Generator::Base
|
10
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
11
11
|
|
12
12
|
def self.add_load_path(path)
|
13
13
|
::Sass.load_paths << path unless ::Sass.load_paths.include?(path)
|
@@ -19,12 +19,9 @@ class EasyHtmlGenerator::Generator::Compile::Sass <
|
|
19
19
|
super(project, config)
|
20
20
|
|
21
21
|
self.class.add_load_path "#{@project.src_path_to :styles}"
|
22
|
-
|
23
|
-
@config.src = project.config.paths.src.styles
|
24
|
-
@config.dest = project.config.paths.dist.styles
|
25
22
|
end
|
26
23
|
|
27
|
-
def do_input(input,
|
24
|
+
def do_input!(input, input_file = 'inline', *_args)
|
28
25
|
renderer = ::Sass::Engine.new(input)
|
29
26
|
result = renderer.render
|
30
27
|
|
@@ -32,16 +29,15 @@ class EasyHtmlGenerator::Generator::Compile::Sass <
|
|
32
29
|
|
33
30
|
EasyHtmlGenerator::Generator::Minimize::Css.compress result
|
34
31
|
rescue StandardError => e
|
35
|
-
raise e, "#{e.message} in #{
|
32
|
+
raise e, "#{e.message} in #{input_file} ", e.backtrace
|
36
33
|
end
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
!File.basename(i).start_with? '_'
|
35
|
+
def file_changed?(file)
|
36
|
+
# regenerate all sass files except imported once
|
37
|
+
!File.basename(file).start_with? '_'
|
42
38
|
end
|
43
39
|
|
44
|
-
def input_to_output_file(
|
45
|
-
super(
|
40
|
+
def input_to_output_file(input_file, config)
|
41
|
+
super(input_file, config).gsub('.css.sass', '.css')
|
46
42
|
end
|
47
43
|
end
|
@@ -3,33 +3,26 @@ require 'fileutils'
|
|
3
3
|
require 'easy_html_generator/generator/base'
|
4
4
|
|
5
5
|
# this generator copies files from src ro dist folder
|
6
|
-
class EasyHtmlGenerator::Generator::Copy <
|
7
|
-
|
8
|
-
return unless @config.enabled
|
6
|
+
class EasyHtmlGenerator::Generator::Copy <
|
7
|
+
EasyHtmlGenerator::Generator::Base
|
9
8
|
|
10
|
-
|
9
|
+
def generate!(config)
|
10
|
+
selector = config.key?(:selector) ? config[:selector] : '**/*'
|
11
11
|
|
12
|
-
|
13
|
-
src_path = resolve_path_prefix(config.source, @project.src_path)
|
14
|
-
dest_path = resolve_path_prefix(config.target, @project.dist_path)
|
15
|
-
|
16
|
-
self.class.copy_r(src_path, dest_path, config.selector)
|
17
|
-
end
|
12
|
+
self.class.copy_r(config.source, config.target, selector)
|
18
13
|
end
|
19
14
|
|
20
15
|
# cannot use copy_entry or cp_r with symbolic existent links in target
|
21
|
-
# FileUtils::copy_entry(src_dir, output_folder, true, false, true)
|
22
|
-
# if File.directory? src_dir
|
23
16
|
def self.copy_r(src_path, dest_path, selector)
|
24
17
|
return unless File.exist? src_path
|
25
18
|
|
26
|
-
FileUtils.mkdir_p dest_path
|
27
|
-
|
28
19
|
Dir[File.join(src_path, selector)].each do |input_file|
|
29
20
|
next if input_file.empty?
|
30
21
|
|
31
22
|
output_file = input_file.sub(src_path, dest_path)
|
32
23
|
|
24
|
+
FileUtils.mkdir_p File.dirname(output_file)
|
25
|
+
|
33
26
|
copy(input_file, output_file)
|
34
27
|
end
|
35
28
|
end
|
@@ -3,19 +3,10 @@ require 'fileutils'
|
|
3
3
|
require 'easy_html_generator/generator/base'
|
4
4
|
|
5
5
|
# this generator deletes in the dest folder
|
6
|
-
class EasyHtmlGenerator::Generator::Delete <
|
7
|
-
|
8
|
-
return unless @config.enabled
|
6
|
+
class EasyHtmlGenerator::Generator::Delete <
|
7
|
+
EasyHtmlGenerator::Generator::Base
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
@config.files.each do |file_pattern|
|
13
|
-
resolved_pattern = resolve_path_prefix(file_pattern, @project.dist_path)
|
14
|
-
Dir[resolved_pattern].each do |file|
|
15
|
-
EasyHtmlGenerator::Checksum.invalidate_file file
|
16
|
-
|
17
|
-
FileUtils.rm_rf file
|
18
|
-
end
|
19
|
-
end
|
9
|
+
def generate!(config)
|
10
|
+
FileUtils.rm_rf Dir[config.source]
|
20
11
|
end
|
21
12
|
end
|
@@ -1,25 +1,18 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'cssminify'
|
3
|
-
require 'easy_html_generator/generator/base'
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
4
4
|
|
5
5
|
# this generator minifies css files from src folder and copies them
|
6
6
|
# to the dist folder
|
7
7
|
class EasyHtmlGenerator::Generator::Minimize::Css <
|
8
|
-
EasyHtmlGenerator::Generator::Base
|
8
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
9
9
|
|
10
|
-
def
|
11
|
-
super(project, config)
|
12
|
-
|
13
|
-
@config.src = project.config.paths.src.styles
|
14
|
-
@config.dest = project.config.paths.dist.styles
|
15
|
-
end
|
16
|
-
|
17
|
-
def do_input(input, *_args)
|
10
|
+
def do_input!(input, *_args)
|
18
11
|
self.class.compress input
|
19
12
|
end
|
20
13
|
|
21
|
-
def input_to_output_file(
|
22
|
-
super(
|
14
|
+
def input_to_output_file(input_file, config)
|
15
|
+
super(input_file, config).gsub('.css', "#{config.prefix_extension}.css")
|
23
16
|
end
|
24
17
|
|
25
18
|
def self.compress(input)
|
@@ -1,25 +1,18 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'htmlcompressor'
|
3
|
-
require 'easy_html_generator/generator/base'
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
4
4
|
|
5
5
|
# this generator minifies html files from src folder and copies them
|
6
6
|
# to the dist folder
|
7
7
|
class EasyHtmlGenerator::Generator::Minimize::Html <
|
8
|
-
EasyHtmlGenerator::Generator::Base
|
8
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
9
9
|
|
10
|
-
def
|
11
|
-
super(project, config)
|
12
|
-
|
13
|
-
@config.src = project.config.paths.src.views
|
14
|
-
@config.dest = project.config.paths.dist.views
|
15
|
-
end
|
16
|
-
|
17
|
-
def do_input(input, *_args)
|
10
|
+
def do_input!(input, *_args)
|
18
11
|
self.class.compress input
|
19
12
|
end
|
20
13
|
|
21
|
-
def input_to_output_file(
|
22
|
-
super(
|
14
|
+
def input_to_output_file(input_file, config)
|
15
|
+
super(input_file, config).gsub('.html', "#{config.prefix_extension}.html")
|
23
16
|
end
|
24
17
|
|
25
18
|
def self.compressor
|
@@ -1,32 +1,18 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'piet'
|
3
|
-
require 'easy_html_generator/generator/base'
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
4
4
|
|
5
5
|
# this generator minifies image files from src folder and copies them
|
6
6
|
# to the dist folder
|
7
7
|
class EasyHtmlGenerator::Generator::Minimize::Images <
|
8
|
-
EasyHtmlGenerator::Generator::Base
|
8
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
9
9
|
|
10
|
-
def
|
11
|
-
|
10
|
+
def do_input!(_input, input_file, output_file, config)
|
11
|
+
FileUtils.copy(input_file, output_file) unless input_file == output_file
|
12
12
|
|
13
|
-
|
14
|
-
@config.dest = project.config.paths.dist.images
|
15
|
-
end
|
16
|
-
|
17
|
-
def do_file(src, target, *args)
|
18
|
-
return unless File.exist?(src) && File.file?(src)
|
19
|
-
log "-> do_file #{src}"
|
20
|
-
|
21
|
-
FileUtils.mkdir_p File.dirname(target)
|
22
|
-
|
23
|
-
args.push target
|
24
|
-
|
25
|
-
FileUtils.copy(src, target)
|
26
|
-
|
27
|
-
Piet.optimize(target, @config.options)
|
13
|
+
Piet.optimize(output_file, config.options)
|
28
14
|
|
29
|
-
|
15
|
+
nil
|
30
16
|
rescue StandardError
|
31
17
|
log '-> you have to install "optipng" and "jpegoptim"'.red
|
32
18
|
end
|
@@ -1,25 +1,18 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'uglifier'
|
3
|
-
require 'easy_html_generator/generator/base'
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
4
4
|
|
5
5
|
# this generator minifies js files from src folder and copies them
|
6
6
|
# to the dist folder
|
7
7
|
class EasyHtmlGenerator::Generator::Minimize::Js <
|
8
|
-
EasyHtmlGenerator::Generator::Base
|
8
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
9
9
|
|
10
|
-
def
|
11
|
-
super(project, config)
|
12
|
-
|
13
|
-
@config.src = project.config.paths.src.scripts
|
14
|
-
@config.dest = project.config.paths.dist.scripts
|
15
|
-
end
|
16
|
-
|
17
|
-
def do_input(input, *_args)
|
10
|
+
def do_input!(input, *_args)
|
18
11
|
self.class.compress input
|
19
12
|
end
|
20
13
|
|
21
|
-
def input_to_output_file(
|
22
|
-
super(
|
14
|
+
def input_to_output_file(input_file, config)
|
15
|
+
super(input_file, config).gsub('.js', "#{config.prefix_extension}.js")
|
23
16
|
end
|
24
17
|
|
25
18
|
def self.compress(input)
|
@@ -1,34 +1,34 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
require 'easy_html_generator/generator/compile/base'
|
3
4
|
|
4
5
|
# this generator adds web tracking snippets to files in the dist folder
|
5
6
|
class EasyHtmlGenerator::Generator::Service::Analytics <
|
6
|
-
EasyHtmlGenerator::Generator::Base
|
7
|
+
EasyHtmlGenerator::Generator::Compile::Base
|
7
8
|
|
8
|
-
def
|
9
|
-
return
|
9
|
+
def do_input!(input, _input_file, _output_file, config)
|
10
|
+
return if input.include? begin_marker(config)
|
10
11
|
|
11
|
-
|
12
|
+
analytics_code = build_content(config)
|
12
13
|
|
13
|
-
|
14
|
-
@config.append_to_files)
|
15
|
-
Dir[selector].each do |file|
|
16
|
-
do_google file
|
17
|
-
end
|
14
|
+
input.sub('</head>', "#{analytics_code}</head>")
|
18
15
|
end
|
19
16
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
content = File.read(file)
|
24
|
-
return if file.include? '<!-- Google Analytics -->'
|
17
|
+
def begin_marker(config)
|
18
|
+
"<!-- #{config.name} Analytics -->"
|
19
|
+
end
|
25
20
|
|
26
|
-
|
21
|
+
def end_marker(config)
|
22
|
+
"<!-- End #{config.name} Analytics -->"
|
23
|
+
end
|
27
24
|
|
28
|
-
|
25
|
+
def build_content(config)
|
26
|
+
content = config.code
|
29
27
|
|
30
|
-
|
28
|
+
config.params.each do |key, value|
|
29
|
+
content.sub!("{#{key}}", value)
|
30
|
+
end
|
31
31
|
|
32
|
-
|
32
|
+
"#{begin_marker(config)} #{content} #{end_marker(config)}"
|
33
33
|
end
|
34
34
|
end
|
@@ -6,29 +6,33 @@ require 'easy_html_generator/generator/base'
|
|
6
6
|
class EasyHtmlGenerator::Generator::Service::Bower <
|
7
7
|
EasyHtmlGenerator::Generator::Base
|
8
8
|
|
9
|
-
def
|
10
|
-
|
9
|
+
def generate!(_config)
|
10
|
+
return unless File.exist? bower_file
|
11
|
+
return unless file_changed? bower_file
|
11
12
|
|
12
|
-
|
13
|
-
@config.dest = ''
|
14
|
-
end
|
13
|
+
log ` #{bower_command} `
|
15
14
|
|
16
|
-
|
17
|
-
input_folder = File.dirname(bower_file)
|
18
|
-
output_folder = File.join(@project.dist_path, @config.target)
|
15
|
+
FileUtils.mkdir_p @config.target
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
&& #{cmd}; else echo '\e[31mplease install bower \
|
23
|
-
\"npm install -g bower\" http://bower.io/ \e[0m'; fi"
|
17
|
+
EasyHtmlGenerator::Generator::Copy.copy_r(
|
18
|
+
bower_storage, @config.target, '**/*')
|
24
19
|
|
25
|
-
|
20
|
+
store_file_hash(bower_file)
|
21
|
+
end
|
26
22
|
|
27
|
-
|
23
|
+
def bower_storage
|
24
|
+
File.join(@config.source, 'bower_components')
|
25
|
+
end
|
28
26
|
|
29
|
-
|
30
|
-
|
27
|
+
def bower_file
|
28
|
+
File.join(@config.source, 'bower.json')
|
29
|
+
end
|
30
|
+
|
31
|
+
def bower_command
|
32
|
+
command = "cd #{@config.source} && bower install --force-latest"
|
31
33
|
|
32
|
-
|
34
|
+
"if which bower >/dev/null; then echo '\e[32mrunning bower\e[0m' \
|
35
|
+
&& #{command}; else echo '\e[31mplease install bower \
|
36
|
+
\"npm install -g bower\" http://bower.io/ \e[0m'; fi"
|
33
37
|
end
|
34
38
|
end
|
@@ -5,20 +5,21 @@ require 'easy_html_generator/generator/base'
|
|
5
5
|
class EasyHtmlGenerator::Generator::Service::Grunt <
|
6
6
|
EasyHtmlGenerator::Generator::Base
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def generate!(config)
|
9
|
+
return unless File.exist? config.source
|
10
|
+
log ` #{grunt_command(config)} `
|
11
|
+
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
def grunt_folder(config)
|
14
|
+
File.dirname(config.source)
|
13
15
|
end
|
14
16
|
|
15
|
-
def
|
16
|
-
|
17
|
+
def grunt_command(config)
|
18
|
+
command = "cd #{grunt_folder(config)} \
|
19
|
+
&& npm install && grunt #{config.task}"
|
17
20
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
\"npm install -g grunt\" http://gruntjs.com/ \e[0m'; fi"
|
22
|
-
log ` #{cmd} `
|
21
|
+
"if which grunt >/dev/null; then echo '\e[32m | ->running grunt \
|
22
|
+
\e[0m' && #{command}; else echo '\e[31mplease install grunt \
|
23
|
+
\"npm install -g grunt\" http://gruntjs.com/ \e[0m'; fi"
|
23
24
|
end
|
24
25
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fileutils'
|
3
|
+
require 'xml-sitemap'
|
4
|
+
require 'easy_html_generator/generator/base'
|
5
|
+
|
6
|
+
# this generator combines files in the dist folder
|
7
|
+
class EasyHtmlGenerator::Generator::Service::Sitemap <
|
8
|
+
EasyHtmlGenerator::Generator::Base
|
9
|
+
|
10
|
+
def generate!(config)
|
11
|
+
files = Dir[config.selector]
|
12
|
+
|
13
|
+
files.map! do |file|
|
14
|
+
file.sub(@project.dist_path, '').sub(@project.name, '')
|
15
|
+
end
|
16
|
+
generate_sitemap(files, config)
|
17
|
+
end
|
18
|
+
|
19
|
+
def generate_sitemap(files, config)
|
20
|
+
map = XmlSitemap::Map.new(config.domain) do |m|
|
21
|
+
files.each do |file|
|
22
|
+
next if blacklisted?(file, config)
|
23
|
+
m.add file, updated: Date.today, period: :daily
|
24
|
+
end
|
25
|
+
end
|
26
|
+
map.render_to(config.target)
|
27
|
+
end
|
28
|
+
|
29
|
+
def blacklisted?(file, config)
|
30
|
+
return false if config.blacklist.nil?
|
31
|
+
config.blacklist.any? { |entry| file.include?(entry) }
|
32
|
+
end
|
33
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'find'
|
3
2
|
require 'fileutils'
|
4
3
|
require 'easy_html_generator/generator/base'
|
5
4
|
|
@@ -7,13 +6,10 @@ require 'easy_html_generator/generator/base'
|
|
7
6
|
class EasyHtmlGenerator::Generator::Structure <
|
8
7
|
EasyHtmlGenerator::Generator::Base
|
9
8
|
|
10
|
-
def generate
|
11
|
-
return unless @config.enabled
|
12
|
-
|
13
|
-
log_running
|
14
|
-
|
9
|
+
def generate!(_config)
|
15
10
|
@project.config.paths.dist.each do |_index, dir|
|
16
11
|
next if dir.empty?
|
12
|
+
|
17
13
|
FileUtils.mkdir_p("#{@project.dist_path}/#{dir}")
|
18
14
|
end
|
19
15
|
end
|
@@ -5,12 +5,6 @@ module EasyHtmlGenerator::Generator
|
|
5
5
|
Dir[File.dirname(__FILE__) + '/generator/*.rb']
|
6
6
|
.each { |file| require file }
|
7
7
|
|
8
|
-
# this is a wrapper module for generator services
|
9
|
-
module Service
|
10
|
-
Dir[File.dirname(__FILE__) + '/generator/service/*.rb']
|
11
|
-
.each { |file| require file }
|
12
|
-
end
|
13
|
-
|
14
8
|
# this is a wrapper module for compiling generators
|
15
9
|
module Compile
|
16
10
|
Dir[File.dirname(__FILE__) + '/generator/compile/*.rb']
|
@@ -22,4 +16,10 @@ module EasyHtmlGenerator::Generator
|
|
22
16
|
Dir[File.dirname(__FILE__) + '/generator/minimize/*.rb']
|
23
17
|
.each { |file| require file }
|
24
18
|
end
|
19
|
+
|
20
|
+
# this is a wrapper module for generator services
|
21
|
+
module Service
|
22
|
+
Dir[File.dirname(__FILE__) + '/generator/service/*.rb']
|
23
|
+
.each { |file| require file }
|
24
|
+
end
|
25
25
|
end
|
@@ -62,6 +62,9 @@ class EasyHtmlGenerator::Project
|
|
62
62
|
def load_config(file)
|
63
63
|
@config = EasyHtmlGenerator::Config.from_file file
|
64
64
|
@config[:generate_on_request_path_match].map! { |p| Regexp.new(p) }
|
65
|
+
@config =
|
66
|
+
EasyHtmlGenerator::ProjectPathResolver.new(self).resolve_config @config
|
67
|
+
|
65
68
|
EasyHtmlGenerator::Checksum.store_file file
|
66
69
|
end
|
67
70
|
|
@@ -73,6 +76,8 @@ class EasyHtmlGenerator::Project
|
|
73
76
|
return unless EasyHtmlGenerator::Checksum.file_changed? @config_file
|
74
77
|
STDERR.puts " | -> reloading config(#{@config_file.green})"
|
75
78
|
|
79
|
+
EasyHtmlGenerator::Checksum.invalidate_all
|
80
|
+
|
76
81
|
load_config @config_file
|
77
82
|
load_generators
|
78
83
|
end
|