frontendloader 0.0.1

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.
data/README.rdoc ADDED
@@ -0,0 +1,14 @@
1
+ #Frontend Loader
2
+
3
+ ##usage:
4
+
5
+ fel init
6
+
7
+ creates a config yaml file, where you can name files and variables, and prioritize the loading of certain scripts and styles.
8
+
9
+ fel compile
10
+
11
+ - Reads the directory containing the FrontendLoader.yml for .less files, .mustache templates and .js scripts.
12
+ - Compiles the .less files down to css, includes the mustache templates.
13
+ - Joins the mustache templates into a single javascript object: templates = {}
14
+ - Joins javascript files together and yui compresses if requested.
data/bin/fel ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ require 'frontendloader'
3
+ fel = FrontendLoader.new
4
+ case ARGV[0]
5
+ when "init"
6
+ fel.init_app
7
+ when "compile"
8
+ fel.compile
9
+ end
@@ -0,0 +1,167 @@
1
+ require 'jscat'
2
+ require 'filestojs'
3
+ require 'yaml'
4
+
5
+ class FrontendLoader
6
+
7
+ attr_accessor :resources_path
8
+
9
+ def initialize
10
+ version = '0.0.1'
11
+ @gem_path = Gem.path[0]+"/gems/frontendloader-"+version
12
+ @resources_path = Gem.path[0]+"/gems/frontendloader-"+version+"/resources"
13
+ end
14
+
15
+ def init_app
16
+ config_path = @resources_path+"/FrontendLoader.yml"
17
+ guard_path = @resources_path+"/Guardfile"
18
+ %x[cp #{config_path} FrontendLoader.yml]
19
+ %x[cp #{guard_path} Guardfile]
20
+ puts "Created basic FrontendLoader app"
21
+ end
22
+
23
+ def boilerplate
24
+ load_settings
25
+ end
26
+
27
+
28
+ def load_settings
29
+ if File.exists? 'FrontendLoader.yml'
30
+ @settings = YAML.load_file('FrontendLoader.yml')
31
+ return true
32
+ else
33
+ puts 'Run fel init first yo'
34
+ return false
35
+ end
36
+ end
37
+
38
+ def compile
39
+ return false unless load_settings
40
+
41
+ #less
42
+
43
+ less_files = Dir.glob("*.less")
44
+
45
+ if less_files.length > 0 then
46
+
47
+ less_files.delete("style.less")
48
+ less_string = ""
49
+ less_files.each { |file|
50
+ puts "Loading #{file}..."
51
+ file = file.gsub(".less","")
52
+ less_string = less_string + "@import '#{file}'; \n"
53
+ File.open('style.less','w') { |f|
54
+ f.write(less_string)
55
+ }
56
+ }
57
+ %x[lessc style.less style.css]
58
+ # %x[rm style.less]
59
+
60
+ end
61
+
62
+
63
+ #TEMPLATES
64
+
65
+ template_joiner = FilesToJs.new({
66
+ :file_dir => '.',
67
+ :file_format => @settings['templates']['format'],
68
+ :js_object_name => @settings['templates']['varname'],
69
+ :output => @settings['templates']['varname']+".js",
70
+ })
71
+ template_joiner.write_js
72
+
73
+
74
+
75
+ #Javascript (includes joined templates)
76
+
77
+
78
+ javascript = JsCat.new({
79
+ :js_dir => '.',
80
+ :prioritize => @settings['javascript']['prioritize'],
81
+ :ignore => ['js.js'],
82
+ :compress => @settings['javascript']['compress'],
83
+ :output => 'js.js'
84
+ })
85
+
86
+ %x[rm templates.js]
87
+
88
+ puts "Compiled into js.js and style.css"
89
+
90
+ end
91
+
92
+
93
+ def create_view(view_title)
94
+ return false unless load_settings
95
+
96
+ style_format = @settings['css']['framework']
97
+ style_directory = @settings['css']['directory']
98
+ style_string = ".#{view_title} {
99
+
100
+ }
101
+ "
102
+
103
+ if File.exists? "#{view_title}.#{@settings['css']['framework']}" then
104
+ puts "View already exists"
105
+ return false
106
+ end
107
+
108
+
109
+ File.open("#{style_directory}/#{view_title}.less",'w') { |f|
110
+ f.write(style_string)
111
+ }
112
+
113
+ classwords = view_title.split('_')
114
+ classwords.each {|word|
115
+ word.capitalize!
116
+ }
117
+
118
+ classname = classwords.join
119
+
120
+ if classwords.last != "View" then classname = classname+"View" end
121
+
122
+ js_directory = @settings['javascript']['directory']
123
+
124
+ js_string = ""
125
+
126
+ viewtemplate = File.open("#{@resources_path}/js/mootools/View.js",'r').read
127
+ js_string = js_string+viewtemplate.gsub('VIEWCLASSNAME',classname).gsub('VIEWTITLE',view_title)
128
+
129
+
130
+ File.open("#{js_directory}/#{classname}.js",'w') { |f|
131
+ f.write(js_string)
132
+ }
133
+
134
+ templates_directory = @settings['templates']['directory']
135
+ templates_format = @settings['templates']['format']
136
+
137
+ File.open("#{templates_directory}/#{view_title}.#{templates_format}",'w') { |f|
138
+ f.write("")
139
+ }
140
+
141
+
142
+ end
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ end
@@ -0,0 +1,23 @@
1
+ # FRONTENDLOADER CONFIG
2
+
3
+ javascript:
4
+ framework: "mootools"
5
+ directory: "."
6
+ compress: false
7
+ prioritize:
8
+ ignore:
9
+ -"js.js"
10
+
11
+
12
+ css:
13
+ framework: "less"
14
+ directory: "."
15
+ prioritize:
16
+ ignore:
17
+
18
+
19
+ templates:
20
+ format: "mustache"
21
+ varname: "templates"
22
+ directory: "."
23
+ ignore:
@@ -0,0 +1,15 @@
1
+ # FrontendLoader Guardfile
2
+
3
+ ignore_paths 'js.js','templates.js', 'lfc.js'
4
+
5
+ guard 'shell' do
6
+ watch(/(.*).js/) {|m| `fel compile` }
7
+ end
8
+
9
+ guard 'shell' do
10
+ watch(/(.*).less/) {|m| `fel compile` }
11
+ end
12
+
13
+ guard 'shell' do
14
+ watch(/(.*).mustache/) {|m| `fel compile` }
15
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frontendloader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Sim
9
+ - Exploding Box Productions
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-10-28 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: jscat
17
+ requirement: &70286025774940 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70286025774940
26
+ - !ruby/object:Gem::Dependency
27
+ name: filestojs
28
+ requirement: &70286025774420 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70286025774420
37
+ - !ruby/object:Gem::Dependency
38
+ name: guard
39
+ requirement: &70286025773820 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.8.8
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *70286025773820
48
+ - !ruby/object:Gem::Dependency
49
+ name: guard-shell
50
+ requirement: &70286025773220 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.2.0
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *70286025773220
59
+ description: Accelerated front end development
60
+ email: dan@explodingbox.com
61
+ executables:
62
+ - fel
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - README.rdoc
67
+ - lib/FrontEndLoader.rb
68
+ - resources/FrontEndLoader.yml
69
+ - resources/Guardfile
70
+ - bin/fel
71
+ homepage: https://github.com/explodingbox/FrontEndLoader
72
+ licenses: []
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.10
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: A command line interface for rapid creation of web app interfaces, compiling
95
+ less, js and mustache files into two requests
96
+ test_files: []