staticz 1.0.7 → 1.0.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18903b9d06f2c505eae4c6e385461a6c82562a0c527d2cfb4474dd58759b1413
4
- data.tar.gz: d14b7be4560eeaadab43aa4749cf63c50fb60f1f27cef7e0d96d3fd052e837e5
3
+ metadata.gz: a80ecb49f81917fbaaf10fabec468748de38f060525fe63826c9b24f6f40fe7e
4
+ data.tar.gz: d0d42fa919ad0e332a6b310a855ec72af64786401e32825f52ace50303ba08f7
5
5
  SHA512:
6
- metadata.gz: 32741ea3f2b95ada6ef444fa4db52ee92323bb5bfe82c2bf8ea510c678f77dae199920487eda5770947510f672e739d523e165e25857a71433a48db7c01ca79d
7
- data.tar.gz: d110fd34a052eb8b551caeb080840909a32eaa9a8baf218ad37204b705a4dcb8501e840300ac7657d575a7026a629b371a289a180cf45a531cda8b5bba3c732a
6
+ metadata.gz: 6b9956372490bdd8bb44ff5533c05e107f9d5997ccf8b42186037dc4dc4e475b55972712c613cc88de3e208999d5ee985f152d215f774d3b43d907c4e43b6738
7
+ data.tar.gz: 104e0a387444c5e8e962936fce024bf416389bc8b4e1a118473827bc6765f1d164511cd9d5ebe313405ac7150e8c09a8e420776e7f2b47162c7d5647a86c9f25
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "coffee"
12
-
13
- def build_file_ending = "js"
14
-
15
- def tile_type_name = "Coff"
11
+ compile "coffee", "js", "Coff"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -20,11 +16,13 @@ module Staticz
20
16
 
21
17
  def build
22
18
  if exists?
23
- js = CoffeeScript.compile File.read(source_path)
24
-
25
- File.write build_path, js
19
+ File.write build_path, render
26
20
  end
27
21
  end
22
+
23
+ def render
24
+ CoffeeScript.compile File.read(source_path)
25
+ end
28
26
  end
29
27
  end
30
28
  end
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "haml"
12
-
13
- def build_file_ending = "html"
14
-
15
- def tile_type_name = "Haml"
11
+ compile "haml", "html", "Haml"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -7,11 +7,7 @@ module Staticz
7
7
 
8
8
  attr_reader :name
9
9
 
10
- def source_file_ending = "js"
11
-
12
- def build_file_ending = "js"
13
-
14
- def tile_type_name = "Js"
10
+ compile "js", "js", "Js"
15
11
 
16
12
  def initialize(name)
17
13
  @name = name
@@ -19,9 +15,13 @@ module Staticz
19
15
 
20
16
  def build
21
17
  if exists?
22
- File.write build_path, File.read(source_path)
18
+ File.write build_path, render
23
19
  end
24
20
  end
21
+
22
+ def render
23
+ File.read(source_path)
24
+ end
25
25
  end
26
26
  end
27
27
  end
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "js"
12
-
13
- def build_file_ending = "js"
14
-
15
- def tile_type_name = "React"
11
+ compile "js", "js", "React"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -20,11 +16,13 @@ module Staticz
20
16
 
21
17
  def build
22
18
  if exists?
23
- engine = Babel::Transpiler.transform File.read(source_path)
24
-
25
- File.write build_path, engine["code"]
19
+ File.write build_path, render
26
20
  end
27
21
  end
22
+
23
+ def render
24
+ Babel::Transpiler.transform(File.read(source_path))["code"]
25
+ end
28
26
  end
29
27
  end
30
28
  end
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "sass"
12
-
13
- def build_file_ending = "css"
14
-
15
- def tile_type_name = "Sass"
11
+ compile "sass", "css", "Sass"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -20,12 +16,14 @@ module Staticz
20
16
 
21
17
  def build
22
18
  if valid?
23
- engine = ::SassC::Engine.new(File.read(source_path), syntax: :sass, style: :compressed)
24
-
25
- File.write build_path, engine.render
19
+ File.write build_path, render
26
20
  end
27
21
  end
28
22
 
23
+ def render
24
+ ::SassC::Engine.new(File.read(source_path), syntax: :sass, style: :compressed).render
25
+ end
26
+
29
27
  def errors
30
28
  errors = super
31
29
 
@@ -8,11 +8,7 @@ module Staticz
8
8
 
9
9
  attr_reader :name
10
10
 
11
- def source_file_ending = "scss"
12
-
13
- def build_file_ending = "css"
14
-
15
- def tile_type_name = "Scss"
11
+ compile "scss", "css", "Scss"
16
12
 
17
13
  def initialize(name)
18
14
  @name = name
@@ -20,12 +16,14 @@ module Staticz
20
16
 
21
17
  def build
22
18
  if valid?
23
- engine = ::SassC::Engine.new(File.read(source_path), syntax: :scss, style: :compressed)
24
-
25
- File.write build_path, engine.render
19
+ File.write build_path, render
26
20
  end
27
21
  end
28
22
 
23
+ def render
24
+ ::SassC::Engine.new(File.read(source_path), syntax: :scss, style: :compressed).render
25
+ end
26
+
29
27
  def errors
30
28
  errors = super
31
29
 
@@ -5,6 +5,8 @@ module Staticz
5
5
  class SimpleFile
6
6
  include Compilable
7
7
 
8
+ compile "", "", "File"
9
+
8
10
  attr_reader :name
9
11
 
10
12
  def source_path
@@ -16,14 +18,10 @@ module Staticz
16
18
  end
17
19
 
18
20
  def create_link_function
21
+ link_path = "/#{name}"
22
+ Object.send(:define_method, path_method_name) { link_path }
19
23
  end
20
24
 
21
- def path_method_name
22
- "no path created"
23
- end
24
-
25
- def tile_type_name = "File"
26
-
27
25
  def initialize(name)
28
26
  @name = name
29
27
  end
@@ -2,6 +2,25 @@ require "io/console"
2
2
 
3
3
  module Staticz
4
4
  module Compilable
5
+ def self.included(base)
6
+ base.extend(ClassMethods)
7
+ end
8
+ module ClassMethods
9
+ def compile(source_file_ending, build_file_ending, file_type_name)
10
+ define_method :source_file_ending do
11
+ source_file_ending
12
+ end
13
+
14
+ define_method :build_file_ending do
15
+ build_file_ending
16
+ end
17
+
18
+ define_method :file_type_name do
19
+ file_type_name
20
+ end
21
+ end
22
+ end
23
+
5
24
  def path
6
25
  name.to_s
7
26
  end
@@ -19,7 +38,7 @@ module Staticz
19
38
  end
20
39
 
21
40
  def path_method_name
22
- "#{path.gsub(/[\/-]/, "_")}_path"
41
+ "#{path.gsub(/[.\/-]/, "_")}_path"
23
42
  end
24
43
 
25
44
  def valid?
@@ -35,18 +54,28 @@ module Staticz
35
54
  end
36
55
 
37
56
  def create_link_function
38
- link_path = "#{name}.#{build_file_ending}"
39
- Object.send(:define_method, path_method_name) { link_path }
57
+ link_path = "/#{name}.#{build_file_ending}"
58
+ shortened_link_path = "/#{name}"
59
+ Object.send(:define_method, path_method_name) do |shorten: false|
60
+ if shorten
61
+ shortened_link_path
62
+ else
63
+ link_path
64
+ end
65
+ end
40
66
  end
41
67
 
42
- def print(indentation)
68
+ def print(indentation, *args)
43
69
  valid_symbol = if valid?
44
70
  Colors.in_green("✔")
45
71
  else
46
72
  Colors.in_red("✘")
47
73
  end
48
74
 
49
- puts "#{" " * (indentation * 3)}└─ #{tile_type_name}: #{path} #{valid_symbol} -> #{path_method_name}"
75
+ compilable_string = "#{" " * (indentation * 3)}└─ #{file_type_name}: #{path} #{valid_symbol}"
76
+ compilable_string << " -> #{path_method_name}" if !args.include? :no_path
77
+
78
+ puts compilable_string
50
79
 
51
80
  _height, width = IO.console.winsize
52
81
 
@@ -0,0 +1,81 @@
1
+ require_relative "sub"
2
+
3
+ module Staticz
4
+ class CSSBundle
5
+ attr_reader :name, :location, :elements
6
+
7
+ def initialize(name, location)
8
+ @name = name
9
+ @location = location
10
+ @elements = []
11
+ end
12
+
13
+ def sub(name, &block)
14
+ s = Staticz::Sub.new(generate_location_path(name))
15
+ elements.push(s)
16
+ s.instance_eval(&block)
17
+ end
18
+
19
+ def sass(name, &block)
20
+ elements.push(Staticz::Compilable::Sass.new(generate_location_path(name)))
21
+ end
22
+
23
+ def scss(name, &block)
24
+ elements.push(Staticz::Compilable::Scss.new(generate_location_path(name)))
25
+ end
26
+
27
+ def generate_location_path(name)
28
+ if location.empty?
29
+ name
30
+ else
31
+ "#{location}/#{name}"
32
+ end
33
+ end
34
+
35
+ def build
36
+ File.write "build/#{name}_bundle.css", render
37
+ end
38
+
39
+ def render
40
+ render_elements elements
41
+ end
42
+
43
+ def render_elements(elements)
44
+ elements
45
+ .map do |element|
46
+ if element.is_a? Staticz::Sub
47
+ render_elements element.elements
48
+ else
49
+ [
50
+ "/* #{element.name} */",
51
+ element.render
52
+ ].join("\n\n")
53
+ end
54
+ end
55
+ .join("\n\n")
56
+ end
57
+
58
+ def path_method_name
59
+ "#{name.to_s.gsub(/[.\/-]/, "_")}_css_bundle_path"
60
+ end
61
+
62
+ def create_link_function
63
+ link_path = "/#{name}_bundle.css"
64
+
65
+ Object.send(:define_method, path_method_name) do
66
+ link_path
67
+ end
68
+ end
69
+
70
+ def print(indentation)
71
+ puts "#{" " * (indentation * 3)}└─ CSSBundle: #{name} -> #{path_method_name}"
72
+ elements.each do |e|
73
+ e.print(indentation + 1, :no_path)
74
+ end
75
+ end
76
+
77
+ def path
78
+ "src/#{name}"
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,85 @@
1
+ require_relative "sub"
2
+
3
+ module Staticz
4
+ class JSBundle
5
+ attr_reader :name, :location, :elements
6
+
7
+ def initialize(name, location)
8
+ @name = name
9
+ @location = location
10
+ @elements = []
11
+ end
12
+
13
+ def sub(name, &block)
14
+ s = Staticz::Sub.new(generate_location_path(name))
15
+ elements.push(s)
16
+ s.instance_eval(&block)
17
+ end
18
+
19
+ def js(name, &block)
20
+ elements.push(Staticz::Compilable::Js.new(generate_location_path(name)))
21
+ end
22
+
23
+ def coffee(name, &block)
24
+ elements.push(Staticz::Compilable::Cs.new(generate_location_path(name)))
25
+ end
26
+
27
+ def react(name, &block)
28
+ elements.push(Staticz::Compilable::React.new(generate_location_path(name)))
29
+ end
30
+
31
+ def generate_location_path(name)
32
+ if location.empty?
33
+ name
34
+ else
35
+ "#{location}/#{name}"
36
+ end
37
+ end
38
+
39
+ def build
40
+ File.write "build/#{name}_bundle.js", render
41
+ end
42
+
43
+ def render
44
+ render_elements elements
45
+ end
46
+
47
+ def render_elements(elements)
48
+ elements
49
+ .map do |element|
50
+ if element.is_a? Staticz::Sub
51
+ render_elements element.elements
52
+ else
53
+ [
54
+ "// #{element.name}",
55
+ element.render
56
+ ].join("\n\n")
57
+ end
58
+ end
59
+ .join("\n\n")
60
+ end
61
+
62
+ def path_method_name
63
+ "#{name.to_s.gsub(/[.\/-]/, "_")}_js_bundle_path"
64
+ end
65
+
66
+ def create_link_function
67
+ link_path = "/#{name}_bundle.js"
68
+
69
+ Object.send(:define_method, path_method_name) do
70
+ link_path
71
+ end
72
+ end
73
+
74
+ def print(indentation)
75
+ puts "#{" " * (indentation * 3)}└─ JSBundle: #{name} -> #{path_method_name}"
76
+ elements.each do |e|
77
+ e.print(indentation + 1, :no_path)
78
+ end
79
+ end
80
+
81
+ def path
82
+ "src/#{name}"
83
+ end
84
+ end
85
+ end
@@ -7,6 +7,8 @@ require_relative "compilable/react"
7
7
  require_relative "compilable/sass"
8
8
  require_relative "compilable/scss"
9
9
  require_relative "compilable/simple_file"
10
+ require_relative "js_bundle"
11
+ require_relative "css_bundle"
10
12
 
11
13
  module Staticz
12
14
  class Manifest
@@ -53,15 +55,33 @@ module Staticz
53
55
  elements.push(Staticz::Compilable::SimpleFile.new(name))
54
56
  end
55
57
 
58
+ def js_bundle(name, &block)
59
+ s = Staticz::JSBundle.new(name, "")
60
+ elements.push(s)
61
+
62
+ s.instance_eval(&block)
63
+ end
64
+
65
+ def css_bundle(name, &block)
66
+ s = Staticz::CSSBundle.new(name, "")
67
+ elements.push(s)
68
+
69
+ s.instance_eval(&block)
70
+ end
71
+
56
72
  def build
57
73
  load "#{Dir.pwd}/manifest.rb"
58
74
 
75
+ create_link_functions
76
+
59
77
  elements.each do |e|
60
- e.create_link_function
78
+ e.build
61
79
  end
80
+ end
62
81
 
82
+ def create_link_functions
63
83
  elements.each do |e|
64
- e.build
84
+ e.create_link_function
65
85
  end
66
86
  end
67
87
 
data/lib/manifest/sub.rb CHANGED
@@ -41,6 +41,20 @@ module Staticz
41
41
  elements.push(Staticz::Compilable::SimpleFile.new("#{@name}/#{name}"))
42
42
  end
43
43
 
44
+ def js_bundle(name, &block)
45
+ s = Staticz::JSBundle.new("#{@name}/#{name}", @name)
46
+ elements.push(s)
47
+
48
+ s.instance_eval(&block)
49
+ end
50
+
51
+ def css_bundle(name, &block)
52
+ s = Staticz::CSSBundle.new("#{@name}/#{name}", @name)
53
+ elements.push(s)
54
+
55
+ s.instance_eval(&block)
56
+ end
57
+
44
58
  def build
45
59
  Dir.mkdir("build/#{name}") if !Dir.exist?("build/#{name}")
46
60
 
@@ -55,10 +69,10 @@ module Staticz
55
69
  end
56
70
  end
57
71
 
58
- def print(indentation)
72
+ def print(indentation, *args)
59
73
  puts "#{" " * (indentation * 3)}└─ Sub: #{name}"
60
74
  elements.each do |e|
61
- e.print(indentation + 1)
75
+ e.print(indentation + 1, *args)
62
76
  end
63
77
  end
64
78
 
data/lib/server.rb CHANGED
@@ -46,6 +46,7 @@ module Staticz
46
46
  build_manifest
47
47
 
48
48
  Thread.new { listen_to_file_changes }
49
+ Thread.new { listen_to_manifest_changes }
49
50
  thin_server.start
50
51
  end
51
52
 
@@ -68,25 +69,36 @@ module Staticz
68
69
  folders << "lib" if Dir.exist? "lib"
69
70
 
70
71
  listener = Listen.to(*folders) do |modified, added, removed|
71
- file_names = (modified + added + removed)
72
- .map do |file|
73
- file.gsub "#{Dir.pwd}/", ""
74
- end
75
- .join(", ")
72
+ trigger_rebuild(modified, added, removed)
73
+ end
74
+ listener.start
75
+ end
76
76
 
77
- $stdout.clear_screen
78
- puts "#{file_names} changed, rebuilding..."
79
- build_manifest
80
- puts "Rebuilding successful"
77
+ def listen_to_manifest_changes
78
+ listener = Listen.to("./", only: /^manifest.rb$/) do |modified, added, removed|
79
+ trigger_rebuild(modified, added, removed)
81
80
  end
82
81
  listener.start
83
82
  end
84
83
 
85
- def build_manifest
86
- Staticz::Modules::Reload.generate_hash
84
+ def trigger_rebuild(modified, added, removed)
85
+ file_names = (modified + added + removed)
86
+ .map do |file|
87
+ file.gsub "#{Dir.pwd}/", ""
88
+ end
89
+ .join(", ")
87
90
 
91
+ $stdout.clear_screen
92
+ puts "#{file_names} changed, rebuilding..."
93
+ build_manifest
94
+ puts "Rebuilding successful"
95
+ end
96
+
97
+ def build_manifest
88
98
  Staticz::Builder.new
89
99
  Staticz::Manifest.instance.print
100
+
101
+ Staticz::Modules::Reload.generate_hash
90
102
  end
91
103
  end
92
104
  end
data/lib/staticz.rb CHANGED
@@ -27,7 +27,12 @@ module Staticz
27
27
  Staticz::Settings.development!
28
28
  Staticz::Server.new
29
29
  when 'manifest'
30
+ Staticz::Settings.development!
31
+
30
32
  load "#{Dir.pwd}/manifest.rb"
33
+ Staticz::Modules::LibLoader.load_files
34
+ Staticz::Manifest.instance.create_link_functions
35
+
31
36
  Staticz::Manifest.instance.print
32
37
  when 'build'
33
38
  Staticz::Settings.production!
data/lib/utils/helpers.rb CHANGED
@@ -4,7 +4,7 @@ def render(component, locals: {}, &block)
4
4
  if block
5
5
  engine.render(Object.new, locals, &block)
6
6
  else
7
- engine.render
7
+ engine.render(Object.new, locals)
8
8
  end
9
9
  end
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: staticz
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipp Schlesinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-02 00:00:00.000000000 Z
11
+ date: 2022-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -127,6 +127,8 @@ files:
127
127
  - lib/manifest/compilable/sass.rb
128
128
  - lib/manifest/compilable/scss.rb
129
129
  - lib/manifest/compilable/simple_file.rb
130
+ - lib/manifest/css_bundle.rb
131
+ - lib/manifest/js_bundle.rb
130
132
  - lib/manifest/manifest.rb
131
133
  - lib/manifest/sub.rb
132
134
  - lib/modules/lib_loader.rb
@@ -165,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
167
  - !ruby/object:Gem::Version
166
168
  version: '0'
167
169
  requirements: []
168
- rubygems_version: 3.3.3
170
+ rubygems_version: 3.3.7
169
171
  signing_key:
170
172
  specification_version: 4
171
173
  summary: Static website compiler