web_blocks 2.0.0.dev

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.
Files changed (88) hide show
  1. checksums.yaml +15 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +23 -0
  4. data/.travis.yml +8 -0
  5. data/CHANGELOG.md +1 -0
  6. data/CONTRIBUTING.md +1 -0
  7. data/Gemfile +3 -0
  8. data/LICENSE.txt +27 -0
  9. data/README.md +641 -0
  10. data/Rakefile +13 -0
  11. data/bin/blocks +9 -0
  12. data/demo/.gitignore +4 -0
  13. data/demo/Blockfile.rb +67 -0
  14. data/demo/bower.json +8 -0
  15. data/demo/package.json +5 -0
  16. data/demo/src/config/WebBlocks-breakpoints.scss +9 -0
  17. data/lib/web_blocks/framework.rb +20 -0
  18. data/lib/web_blocks/manager/bower.rb +106 -0
  19. data/lib/web_blocks/manager/builder/base.rb +31 -0
  20. data/lib/web_blocks/manager/builder/js.rb +54 -0
  21. data/lib/web_blocks/manager/builder/scss.rb +57 -0
  22. data/lib/web_blocks/manager/parallel_builder.rb +52 -0
  23. data/lib/web_blocks/product/concat_file/js.rb +15 -0
  24. data/lib/web_blocks/product/concat_file/raw.rb +33 -0
  25. data/lib/web_blocks/product/concat_file/scss.rb +21 -0
  26. data/lib/web_blocks/strategy/compile/scss.rb +90 -0
  27. data/lib/web_blocks/strategy/link/base.rb +51 -0
  28. data/lib/web_blocks/strategy/link/js.rb +30 -0
  29. data/lib/web_blocks/strategy/link/scss.rb +30 -0
  30. data/lib/web_blocks/structure/attribute/dependency.rb +25 -0
  31. data/lib/web_blocks/structure/attribute/loose_dependency.rb +25 -0
  32. data/lib/web_blocks/structure/attribute/reverse_dependency.rb +16 -0
  33. data/lib/web_blocks/structure/attribute/reverse_loose_dependency.rb +16 -0
  34. data/lib/web_blocks/structure/block.rb +95 -0
  35. data/lib/web_blocks/structure/font_file.rb +9 -0
  36. data/lib/web_blocks/structure/framework.rb +79 -0
  37. data/lib/web_blocks/structure/img_file.rb +9 -0
  38. data/lib/web_blocks/structure/js_file.rb +9 -0
  39. data/lib/web_blocks/structure/raw_file.rb +30 -0
  40. data/lib/web_blocks/structure/scss_file.rb +9 -0
  41. data/lib/web_blocks/structure/tree/leaf_node.rb +44 -0
  42. data/lib/web_blocks/structure/tree/node.rb +14 -0
  43. data/lib/web_blocks/structure.rb +7 -0
  44. data/lib/web_blocks/support/attributes/class/container.rb +24 -0
  45. data/lib/web_blocks/support/attributes/container.rb +41 -0
  46. data/lib/web_blocks/support/parallel_jobs.rb +26 -0
  47. data/lib/web_blocks/support/scoped_logger.rb +49 -0
  48. data/lib/web_blocks/support/tree/child.rb +23 -0
  49. data/lib/web_blocks/support/tree/node.rb +14 -0
  50. data/lib/web_blocks/support/tree/parent.rb +35 -0
  51. data/lib/web_blocks/support/tsort/hash.rb +29 -0
  52. data/lib/web_blocks/thor/base/class/type_get_class_from_string.rb +36 -0
  53. data/lib/web_blocks/thor/base/class/types.rb +21 -0
  54. data/lib/web_blocks/thor/base/initialize.rb +145 -0
  55. data/lib/web_blocks/thor/base/prepare_blocks.rb +155 -0
  56. data/lib/web_blocks/thor/base.rb +12 -0
  57. data/lib/web_blocks/thor/build/all.rb +30 -0
  58. data/lib/web_blocks/thor/build.rb +13 -0
  59. data/lib/web_blocks/thor/inspect/blocks/attribute_printer.rb +48 -0
  60. data/lib/web_blocks/thor/inspect/blocks/block_printer.rb +43 -0
  61. data/lib/web_blocks/thor/inspect/blocks/printer.rb +24 -0
  62. data/lib/web_blocks/thor/inspect/blocks.rb +27 -0
  63. data/lib/web_blocks/thor/inspect/bower_registry.rb +24 -0
  64. data/lib/web_blocks/thor/inspect/dependency_list.rb +30 -0
  65. data/lib/web_blocks/thor/inspect/dependency_order.rb +26 -0
  66. data/lib/web_blocks/thor/inspect.rb +11 -0
  67. data/lib/web_blocks/thor/partial/compile/scss.rb +24 -0
  68. data/lib/web_blocks/thor/partial/compile.rb +13 -0
  69. data/lib/web_blocks/thor/partial/link/js.rb +23 -0
  70. data/lib/web_blocks/thor/partial/link/scss.rb +23 -0
  71. data/lib/web_blocks/thor/partial/link.rb +13 -0
  72. data/lib/web_blocks/thor/partial/runner.rb +14 -0
  73. data/lib/web_blocks/thor/runner.rb +16 -0
  74. data/lib/web_blocks/thor/watch/all.rb +67 -0
  75. data/lib/web_blocks/thor/watch.rb +13 -0
  76. data/lib/web_blocks/version.rb +3 -0
  77. data/lib/web_blocks.rb +13 -0
  78. data/test/init.rb +7 -0
  79. data/test/web_blocks/framework.rb +40 -0
  80. data/test/web_blocks/structure.rb +42 -0
  81. data/test/web_blocks/support/attribute/class/container.rb +29 -0
  82. data/test/web_blocks/support/attribute/container.rb +71 -0
  83. data/test/web_blocks/support/tree/child.rb +60 -0
  84. data/test/web_blocks/support/tree/node.rb +18 -0
  85. data/test/web_blocks/support/tree/parent.rb +81 -0
  86. data/test/web_blocks/version.rb +10 -0
  87. data/web_blocks.gemspec +35 -0
  88. metadata +297 -0
@@ -0,0 +1,25 @@
1
+ require 'web_blocks/support/attributes/class/container'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ module Attribute
6
+ module Dependency
7
+
8
+ class << self
9
+ include ::WebBlocks::Support::Attributes::Class::Container
10
+ end
11
+
12
+ set :dependencies, []
13
+
14
+ def dependency route
15
+ push :dependencies, route
16
+ end
17
+
18
+ def resolve_dependencies
19
+ merge_branch_array_attribute :dependencies
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'web_blocks/support/attributes/class/container'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ module Attribute
6
+ module LooseDependency
7
+
8
+ class << self
9
+ include ::WebBlocks::Support::Attributes::Class::Container
10
+ end
11
+
12
+ set :loose_dependencies, []
13
+
14
+ def loose_dependency route
15
+ push :loose_dependencies, route
16
+ end
17
+
18
+ def resolve_loose_dependencies
19
+ merge_branch_array_attribute :loose_dependencies
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'web_blocks/support/attributes/class/container'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ module Attribute
6
+ module ReverseDependency
7
+
8
+ def reverse_dependency route
9
+ block = framework.block_from_route route
10
+ block.dependency self.route
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'web_blocks/support/attributes/class/container'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ module Attribute
6
+ module ReverseLooseDependency
7
+
8
+ def reverse_loose_dependency route
9
+ block = framework.block_from_route route
10
+ block.loose_dependency self.route
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,95 @@
1
+ require 'web_blocks/framework'
2
+ require 'web_blocks/structure/tree/node'
3
+ require 'web_blocks/structure/block'
4
+ require 'web_blocks/structure/scss_file'
5
+ require 'web_blocks/structure/js_file'
6
+ require 'web_blocks/structure/attribute/dependency'
7
+ require 'web_blocks/structure/attribute/loose_dependency'
8
+ require 'web_blocks/structure/attribute/reverse_dependency'
9
+ require 'web_blocks/structure/attribute/reverse_loose_dependency'
10
+
11
+ module WebBlocks
12
+ module Structure
13
+ class Block < ::WebBlocks::Structure::Tree::Node
14
+
15
+ include WebBlocks::Framework
16
+ include WebBlocks::Structure::Attribute::Dependency
17
+ include WebBlocks::Structure::Attribute::LooseDependency
18
+ include WebBlocks::Structure::Attribute::ReverseDependency
19
+ include WebBlocks::Structure::Attribute::ReverseLooseDependency
20
+
21
+ set :required, false
22
+
23
+ def resolved_path
24
+ path = attributes.has_key?(:path) ? attributes[:path] : ''
25
+ if attributes.has_key? :base_path
26
+ Pathname.new(attributes[:base_path]) + path
27
+ elsif parent
28
+ parent.resolved_path + path
29
+ else
30
+ Pathname.new(path)
31
+ end
32
+ end
33
+
34
+ def block name, attributes = {}, &block
35
+ child_eval ::WebBlocks::Structure::Block, name, attributes, block
36
+ end
37
+
38
+ def scss_file name, attributes = {}, &block
39
+ child_eval ::WebBlocks::Structure::ScssFile, name, attributes, block
40
+ end
41
+
42
+ def js_file name, attributes = {}, &block
43
+ child_eval ::WebBlocks::Structure::JsFile, name, attributes, block
44
+ end
45
+
46
+ def files
47
+ computed = []
48
+ children.each do |name,object|
49
+ if object.is_a? Block
50
+ computed = computed + object.files
51
+ elsif object.is_a? RawFile
52
+ computed << object
53
+ end
54
+ end
55
+ computed
56
+ end
57
+
58
+ def select_leaf_nodes branch_select_proc, leaf_select_proc
59
+ leaf_nodes = []
60
+ nodes = [self]
61
+ while nodes.length > 0
62
+ node = nodes.pop
63
+ if node.respond_to? :children
64
+ nodes |= node.children.values.select(&branch_select_proc)
65
+ elsif leaf_select_proc.call(node)
66
+ leaf_nodes << node
67
+ end
68
+ end
69
+ leaf_nodes
70
+ end
71
+
72
+ def required_files
73
+ select_leaf_nodes Proc.new(){ |node| node.get(:required) }, Proc.new(){ |node| node.is_a? RawFile }
74
+ end
75
+
76
+ private
77
+
78
+ def child_add_or_update klass, name, attributes = {}
79
+ unless has_child? name
80
+ add_child klass.new(name, attributes)
81
+ else
82
+ attributes.each { |key, value| children[name].set key, value }
83
+ end
84
+ children[name]
85
+ end
86
+
87
+ def child_eval klass, name, attributes = {}, block
88
+ child = child_add_or_update klass, name, attributes
89
+ child.instance_exec children[name], &block if block
90
+ child
91
+ end
92
+
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,9 @@
1
+ require 'web_blocks/structure/raw_file'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ class FontFile < ::WebBlocks::Structure::RawFile
6
+
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,79 @@
1
+ require 'web_blocks/structure/block'
2
+ require 'web_blocks/structure/raw_file'
3
+ require 'web_blocks/support/tsort/hash'
4
+
5
+ module WebBlocks
6
+ module Structure
7
+ class Framework < Block
8
+
9
+ set :required, true
10
+
11
+ def register hash
12
+ name = hash[:name]
13
+ path = hash[:path]
14
+ resolved_block_path = resolved_path + path
15
+ blockfile_path = resolved_block_path + "Blockfile.rb"
16
+ raise "Undefined blockfile for #{path}" unless File.exists?(blockfile_path)
17
+ instance_eval File.read(blockfile_path)
18
+ block name do
19
+ set :base_path, resolved_block_path
20
+ end
21
+ end
22
+
23
+ def include *args
24
+ block = self
25
+ args.each do |name|
26
+ block = block.block(name)
27
+ block.set :required, true
28
+ end
29
+ nodes = block.children.values
30
+ while nodes.length > 0
31
+ node = nodes.pop
32
+ node.set :required, true
33
+ if node.respond_to? :children
34
+ node.children.values.each { |node_child| nodes << node_child }
35
+ end
36
+ end
37
+ end
38
+
39
+ def block_from_route route
40
+ block = self
41
+ route.each { |name| block = block.block(name) }
42
+ block
43
+ end
44
+
45
+ def adjacency_list
46
+
47
+ file_dependencies = {}
48
+
49
+ files = required_files
50
+ while files.length > 0
51
+ file = files.pop
52
+ file_dependencies[file] = []
53
+ file.resolve_dependencies.each do |dependency_route|
54
+ block_from_route(dependency_route).files.each do |dependency_file|
55
+ files << dependency_file unless file_dependencies.has_key?(dependency_file)
56
+ file_dependencies[file] << dependency_file
57
+ end
58
+ end
59
+ end
60
+
61
+ file_dependencies.each do |file, dependencies|
62
+ file.resolve_loose_dependencies.each do |dependency_route|
63
+ block_from_route(dependency_route).files.each do |dependency_file|
64
+ file_dependencies[file] << dependency_file if file_dependencies.has_key?(dependency_file)
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+
71
+ def get_file_load_order type = RawFile
72
+
73
+ ::WebBlocks::Support::TSort::Hash.try_convert(adjacency_list).tsort.keep_if(){ |file| file.is_a? type }
74
+
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,9 @@
1
+ require 'web_blocks/structure/raw_file'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ class ImgFile < ::WebBlocks::Structure::RawFile
6
+
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'web_blocks/structure/raw_file'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ class JsFile < ::WebBlocks::Structure::RawFile
6
+
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ require 'web_blocks/framework'
2
+ require 'web_blocks/structure/tree/leaf_node'
3
+ require 'web_blocks/structure/attribute/dependency'
4
+ require 'web_blocks/structure/attribute/loose_dependency'
5
+
6
+ module WebBlocks
7
+ module Structure
8
+ class RawFile < ::WebBlocks::Structure::Tree::LeafNode
9
+
10
+ include WebBlocks::Framework
11
+ include WebBlocks::Structure::Attribute::Dependency
12
+ include WebBlocks::Structure::Attribute::LooseDependency
13
+
14
+ set :required, true
15
+
16
+ def resolved_path
17
+ parent.resolved_path + (attributes.has_key?(:path) ? attributes[:path] : name)
18
+ end
19
+
20
+ def inspect
21
+ {
22
+ :name => name,
23
+ :route => route,
24
+ :resolved_path => resolved_path
25
+ }
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ require 'web_blocks/structure/raw_file'
2
+
3
+ module WebBlocks
4
+ module Structure
5
+ class ScssFile < ::WebBlocks::Structure::RawFile
6
+
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,44 @@
1
+ require 'extend_method'
2
+ require 'web_blocks/support/attributes/class/container'
3
+ require 'web_blocks/support/attributes/container'
4
+ require 'web_blocks/support/tree/node'
5
+ require 'web_blocks/support/tree/child'
6
+
7
+ module WebBlocks
8
+ module Structure
9
+ module Tree
10
+ class LeafNode
11
+
12
+ class << self
13
+ include ::ExtendMethod
14
+ include ::WebBlocks::Support::Attributes::Class::Container
15
+ end
16
+
17
+ include ::WebBlocks::Support::Attributes::Container
18
+ include ::WebBlocks::Support::Tree::Node
19
+ include ::WebBlocks::Support::Tree::Child
20
+
21
+ extend_method :initialize do |name, attributes = {}|
22
+ parent_method name
23
+ self.attributes attributes
24
+ end
25
+
26
+ def route *args
27
+ val = parents.map{|parent| parent.name}.reverse + [name] + args
28
+ val.shift
29
+ val
30
+ end
31
+
32
+ def merge_branch_array_attribute attribute, method = nil
33
+ parent ? (get(attribute) + parent.send(method || caller[0][/`([^']*)'/, 1])) : get(attribute)
34
+ end
35
+
36
+ def run &block
37
+ instance_eval &block
38
+ self
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,14 @@
1
+ require 'web_blocks/structure/tree/leaf_node'
2
+ require 'web_blocks/support/tree/parent'
3
+
4
+ module WebBlocks
5
+ module Structure
6
+ module Tree
7
+ class Node < LeafNode
8
+
9
+ include ::WebBlocks::Support::Tree::Parent
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ require 'pathname'
2
+
3
+ module WebBlocks
4
+ module Structure; end
5
+ end
6
+
7
+ Dir.glob(Pathname.new(__FILE__).parent.realpath + "structure/**/*.rb").each { |r| require r }
@@ -0,0 +1,24 @@
1
+ module WebBlocks
2
+ module Support
3
+ module Attributes
4
+ module Class
5
+ module Container
6
+
7
+ def set name, value
8
+ attributes[self.name] = {} unless attributes.has_key? self.name
9
+ attributes[self.name][name] = value
10
+ end
11
+
12
+ def attributes name = nil
13
+ if name
14
+ @@attributes.has_key?(name) ? @@attributes[name] : {}
15
+ else
16
+ @@attributes ||= {}
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ module WebBlocks
2
+ module Support
3
+ module Attributes
4
+ module Container
5
+
6
+ def has? name
7
+ attributes.has_key? name
8
+ end
9
+
10
+ def get name
11
+ attributes[name]
12
+ end
13
+
14
+ def set name, value
15
+ attributes name => value
16
+ end
17
+
18
+ def push name, value
19
+ attributes[name] << value
20
+ end
21
+
22
+ def attributes hash = nil
23
+ @attributes = class_attributes unless @attributes
24
+ @attributes.merge! hash if hash
25
+ @attributes
26
+ end
27
+
28
+ def class_attributes
29
+ computed = {}
30
+ self.class.ancestors.reverse.each do |klass|
31
+ if self.class.respond_to?(:attributes) and self.class.attributes.has_key?(klass.to_s)
32
+ computed.merge! self.class.attributes[klass.to_s]
33
+ end
34
+ end
35
+ Marshal.load(Marshal.dump(computed)) # deep clone
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,26 @@
1
+ require 'fork'
2
+
3
+ module WebBlocks
4
+ module Support
5
+ class ParallelJobs
6
+ def initialize
7
+ @running = []
8
+ end
9
+ def start &block
10
+ fork = Fork.execute :return, :exceptions do
11
+ yield
12
+ true
13
+ end
14
+ @running << fork
15
+ end
16
+ def wait_for_complete!
17
+ begin
18
+ @running.each { |p| p.return_value }
19
+ ensure
20
+ @running.each { |p| p.kill if p.alive? }
21
+ @running = []
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,49 @@
1
+ require 'logger'
2
+ require 'delegate'
3
+
4
+ module WebBlocks
5
+ module Support
6
+ class ScopedLogger < ::SimpleDelegator
7
+
8
+ class << self
9
+ def new_without_scope logdev, shift_age = 0, shift_size = 1048576
10
+ self.new nil, logdev, shift_age, shift_size
11
+ end
12
+ end
13
+
14
+ attr_accessor :scopename
15
+
16
+ def initialize scopename, logdev, shift_age = 0, shift_size = 1048576
17
+ if logdev.is_a? ::Logger or logdev.is_a? ::WebBlocks::Support::ScopedLogger
18
+ super logdev
19
+ else
20
+ super ::Logger.new logdev, shift_age, shift_size
21
+ end
22
+ @scopename = scopename
23
+ end
24
+
25
+ def scope name = nil, &block
26
+ scoped_logger = self.class.new scopename ? "#{scopename} - #{name}" : name, __getobj__
27
+ yield scoped_logger if block_given?
28
+ scoped_logger
29
+ end
30
+
31
+ def scoped_progname progname = nil
32
+ if scopename
33
+ progname ? "#{scopename} - #{progname}" : scopename
34
+ else
35
+ progname ? progname : nil
36
+ end
37
+ end
38
+
39
+ def add severity, message = nil, progname = nil, &block
40
+ __getobj__.add(severity, message, scoped_progname(progname), &block)
41
+ end
42
+
43
+ [:debug, :error, :fatal, :info, :unknown, :warn].each do |method|
44
+ define_method(method) { |progname = nil, &block| __getobj__.send(method, scoped_progname(progname), &block) }
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,23 @@
1
+ module WebBlocks
2
+ module Support
3
+ module Tree
4
+ module Child
5
+
6
+ def set_parent parent
7
+ @parent = parent
8
+ @parent.add_child(self) if @parent.respond_to?(:add_child)
9
+ end
10
+
11
+ def parent
12
+ @parent ||= nil
13
+ end
14
+
15
+ def parents
16
+ parent ? parent.parents.unshift(parent) : []
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,14 @@
1
+ module WebBlocks
2
+ module Support
3
+ module Tree
4
+ module Node
5
+
6
+ attr_reader :name
7
+ def initialize name
8
+ @name = name
9
+ end
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ module WebBlocks
2
+ module Support
3
+ module Tree
4
+ module Parent
5
+
6
+ def add_child child
7
+ key = child.respond_to?(:name) ? child.name : child
8
+ return if has_child? key
9
+ @children ||= {}
10
+ @children[key] = child
11
+ child.set_parent(self) if child.respond_to?(:set_parent)
12
+ end
13
+
14
+ def children
15
+ @children || {}
16
+ end
17
+
18
+ def has_child? name
19
+ children.has_key? name
20
+ end
21
+
22
+ def remove_child child
23
+ name = child.respond_to?(:name) ? child.name : child
24
+ children.delete name if has_child? name
25
+ end
26
+
27
+ def remove_all_children
28
+ @children = {}
29
+ end
30
+
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,29 @@
1
+ require 'tsort'
2
+
3
+ module WebBlocks
4
+ module Support
5
+ module TSort
6
+ class Hash < ::Hash
7
+
8
+ class << self
9
+ def try_convert original
10
+ converted = self.new
11
+ super(original).each do |key, value|
12
+ converted[key] = value
13
+ end
14
+ converted
15
+ end
16
+ end
17
+
18
+ include ::TSort
19
+
20
+ alias tsort_each_node each_key
21
+
22
+ def tsort_each_child(node, &block)
23
+ fetch(node).each(&block)
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ require 'web_blocks/thor/base'
2
+ require 'web_blocks/structure/raw_file'
3
+ require 'web_blocks/structure/scss_file'
4
+ require 'web_blocks/structure/js_file'
5
+ require 'web_blocks/structure/img_file'
6
+ require 'web_blocks/structure/font_file'
7
+
8
+ module WebBlocks
9
+ module Thor
10
+ class Base
11
+ class << self
12
+
13
+ def type_get_class_from_string string
14
+ string = string.downcase if string
15
+ case string
16
+ when 'all'
17
+ ::WebBlocks::Structure::RawFile
18
+ when 'scss'
19
+ ::WebBlocks::Structure::ScssFile
20
+ when 'js'
21
+ ::WebBlocks::Structure::JsFile
22
+ when 'img'
23
+ ::WebBlocks::Structure::ImgFile
24
+ when 'font'
25
+ ::WebBlocks::Structure::FontFile
26
+ when nil
27
+ ::WebBlocks::Structure::RawFile
28
+ else
29
+ raise "invalid type `#{string}' specified"
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end