frontendloader 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +14 -0
- data/bin/fel +9 -0
- data/lib/FrontEndLoader.rb +167 -0
- data/resources/FrontEndLoader.yml +23 -0
- data/resources/Guardfile +15 -0
- metadata +96 -0
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,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:
|
data/resources/Guardfile
ADDED
@@ -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: []
|