web_blocks 2.0.0.dev

Sign up to get free protection for your applications and to get access to all the features.
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