milk 0.0.0 → 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/INSTALL +8 -0
- data/LICENSE +24 -17
- data/README +3 -0
- data/Rakefile +21 -56
- data/bin/milk +2 -19
- data/doc/classes/Milk.html +198 -0
- data/doc/classes/Milk.src/M000005.html +17 -0
- data/doc/classes/Milk/Application.html +209 -0
- data/doc/classes/Milk/Application.src/M000007.html +69 -0
- data/doc/classes/Milk/Application.src/M000008.html +38 -0
- data/doc/classes/Milk/Component.html +397 -0
- data/doc/classes/Milk/Component.src/M000014.html +19 -0
- data/doc/classes/Milk/Component.src/M000015.html +16 -0
- data/doc/classes/Milk/Component.src/M000016.html +15 -0
- data/doc/classes/Milk/Component.src/M000017.html +15 -0
- data/doc/classes/Milk/Component.src/M000018.html +15 -0
- data/doc/classes/Milk/Component.src/M000019.html +15 -0
- data/doc/classes/Milk/Component.src/M000020.html +15 -0
- data/doc/classes/Milk/Component.src/M000021.html +15 -0
- data/doc/classes/Milk/Component.src/M000022.html +18 -0
- data/doc/classes/Milk/Component.src/M000023.html +21 -0
- data/doc/classes/Milk/Component.src/M000024.html +15 -0
- data/doc/classes/Milk/Component.src/M000025.html +22 -0
- data/doc/classes/Milk/ExternalCompilerError.html +117 -0
- data/doc/classes/Milk/Field.html +114 -0
- data/doc/classes/Milk/Fields.html +173 -0
- data/doc/classes/Milk/Fields/ComponentArray.html +114 -0
- data/doc/classes/Milk/Fields/ImageChooser.html +114 -0
- data/doc/classes/Milk/Fields/MarkdownField.html +114 -0
- data/doc/classes/Milk/Fields/PageChooser.html +114 -0
- data/doc/classes/Milk/Fields/SpriteChooser.html +114 -0
- data/doc/classes/Milk/Fields/TextField.html +114 -0
- data/doc/classes/Milk/Haxe.html +208 -0
- data/doc/classes/Milk/Haxe.src/M000005.html +40 -0
- data/doc/classes/Milk/Haxe.src/M000006.html +15 -0
- data/doc/classes/Milk/Page.html +243 -0
- data/doc/classes/Milk/Page.src/M000009.html +17 -0
- data/doc/classes/Milk/Page.src/M000010.html +17 -0
- data/doc/classes/Milk/Page.src/M000011.html +18 -0
- data/doc/classes/Milk/Page.src/M000012.html +20 -0
- data/doc/classes/Milk/Page.src/M000013.html +21 -0
- data/doc/classes/Milk/PageNotFoundError.html +110 -0
- data/doc/classes/Object.html +237 -0
- data/doc/classes/Object.src/M000001.html +13 -0
- data/doc/classes/Object.src/M000002.html +13 -0
- data/doc/classes/Object.src/M000003.html +15 -0
- data/doc/classes/Object.src/M000004.html +15 -0
- data/doc/created.rid +1 -0
- data/doc/files/INSTALL.html +106 -0
- data/doc/files/LICENSE.html +126 -0
- data/doc/files/README.html +100 -0
- data/doc/files/Rakefile.html +121 -0
- data/doc/files/bin/milk.html +100 -0
- data/doc/files/doc/classes/Milk/Application_html.html +302 -0
- data/doc/files/doc/classes/Milk/Application_src/M000007_html.html +173 -0
- data/doc/files/doc/classes/Milk/Application_src/M000008_html.html +142 -0
- data/doc/files/doc/classes/Milk/Component_html.html +477 -0
- data/doc/files/doc/classes/Milk/Component_src/M000014_html.html +123 -0
- data/doc/files/doc/classes/Milk/Component_src/M000015_html.html +120 -0
- data/doc/files/doc/classes/Milk/Component_src/M000016_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000017_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000018_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000019_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000020_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000021_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000022_html.html +122 -0
- data/doc/files/doc/classes/Milk/Component_src/M000023_html.html +125 -0
- data/doc/files/doc/classes/Milk/Component_src/M000024_html.html +119 -0
- data/doc/files/doc/classes/Milk/Component_src/M000025_html.html +126 -0
- data/doc/files/doc/classes/Milk/ExternalCompilerError_html.html +214 -0
- data/doc/files/doc/classes/Milk/Field_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/ComponentArray_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/ImageChooser_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/MarkdownField_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/PageChooser_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/SpriteChooser_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields/TextField_html.html +209 -0
- data/doc/files/doc/classes/Milk/Fields_html.html +264 -0
- data/doc/files/doc/classes/Milk/Haxe_html.html +298 -0
- data/doc/files/doc/classes/Milk/Haxe_src/M000005_html.html +144 -0
- data/doc/files/doc/classes/Milk/Haxe_src/M000006_html.html +119 -0
- data/doc/files/doc/classes/Milk/PageNotFoundError_html.html +205 -0
- data/doc/files/doc/classes/Milk/Page_html.html +330 -0
- data/doc/files/doc/classes/Milk/Page_src/M000009_html.html +121 -0
- data/doc/files/doc/classes/Milk/Page_src/M000010_html.html +121 -0
- data/doc/files/doc/classes/Milk/Page_src/M000011_html.html +122 -0
- data/doc/files/doc/classes/Milk/Page_src/M000012_html.html +124 -0
- data/doc/files/doc/classes/Milk/Page_src/M000013_html.html +125 -0
- data/doc/files/doc/classes/Milk_html.html +321 -0
- data/doc/files/doc/classes/Object_html.html +334 -0
- data/doc/files/doc/classes/Object_src/M000001_html.html +117 -0
- data/doc/files/doc/classes/Object_src/M000002_html.html +117 -0
- data/doc/files/doc/classes/Object_src/M000003_html.html +119 -0
- data/doc/files/doc/classes/Object_src/M000004_html.html +119 -0
- data/doc/files/doc/created_rid.html +97 -0
- data/doc/files/doc/files/INSTALL_html.html +206 -0
- data/doc/files/doc/files/LICENSE_html.html +226 -0
- data/doc/files/doc/files/README_html.html +201 -0
- data/doc/files/doc/files/Rakefile_html.html +221 -0
- data/doc/files/doc/files/bin/milk_html.html +198 -0
- data/doc/files/doc/files/lib/milk/application_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/component_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/field_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/component_array_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/image_chooser_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/markdown_field_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/page_chooser_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/sprite_chooser_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/text_field_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/fields/xhtml_haml_html.html +211 -0
- data/doc/files/doc/files/lib/milk/haxe_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/page_rb_html.html +188 -0
- data/doc/files/doc/files/lib/milk/tasks_rb_html.html +202 -0
- data/doc/files/doc/files/lib/milk/templates/bzrignore_html.html +197 -0
- data/doc/files/doc/files/lib/milk/templates/rackup_html.html +217 -0
- data/doc/files/doc/files/lib/milk/templates/rakefile_html.html +198 -0
- data/doc/files/doc/files/lib/milk/templates/restart_html.html +197 -0
- data/doc/files/doc/files/lib/milk_rb_html.html +197 -0
- data/doc/files/doc/fr_class_index_html.html +160 -0
- data/doc/files/doc/fr_file_index_html.html +174 -0
- data/doc/files/doc/fr_method_index_html.html +178 -0
- data/doc/files/doc/index_html.html +128 -0
- data/doc/files/doc/rdoc-style_css.html +665 -0
- data/doc/files/lib/milk/application_rb.html +90 -0
- data/doc/files/lib/milk/component_rb.html +90 -0
- data/doc/files/lib/milk/field_rb.html +90 -0
- data/doc/files/lib/milk/fields/component_array_rb.html +90 -0
- data/doc/files/lib/milk/fields/image_chooser_rb.html +90 -0
- data/doc/files/lib/milk/fields/markdown_field_rb.html +90 -0
- data/doc/files/lib/milk/fields/page_chooser_rb.html +90 -0
- data/doc/files/lib/milk/fields/sprite_chooser_rb.html +90 -0
- data/doc/files/lib/milk/fields/text_field_rb.html +90 -0
- data/doc/files/lib/milk/fields/xhtml_haml.html +107 -0
- data/doc/files/lib/milk/haxe_rb.html +90 -0
- data/doc/files/lib/milk/page_rb.html +90 -0
- data/doc/files/lib/milk/tasks_rb.html +104 -0
- data/doc/files/lib/milk/templates/bzrignore.html +97 -0
- data/doc/files/lib/milk/templates/rackup.html +119 -0
- data/doc/files/lib/milk/templates/rakefile.html +98 -0
- data/doc/files/lib/milk/templates/restart.html +97 -0
- data/doc/files/lib/milk_rb.html +97 -0
- data/doc/fr_class_index.html +27 -0
- data/doc/fr_file_index.html +169 -0
- data/doc/fr_method_index.html +33 -0
- data/doc/index.html +21 -0
- data/doc/rdoc-style.css +299 -0
- data/lib/milk.rb +58 -0
- data/lib/milk/application.rb +98 -0
- data/lib/milk/component.rb +73 -0
- data/lib/milk/field.rb +16 -0
- data/lib/milk/fields/component_array.rb +4 -0
- data/lib/milk/fields/image_chooser.rb +4 -0
- data/lib/milk/fields/markdown_field.rb +4 -0
- data/lib/milk/fields/page_chooser.rb +4 -0
- data/lib/milk/fields/sprite_chooser.rb +4 -0
- data/lib/milk/fields/text_field.rb +4 -0
- data/lib/milk/fields/xhtml.haml +10 -0
- data/lib/milk/haxe.rb +139 -0
- data/lib/milk/page.rb +45 -0
- data/lib/milk/tasks.rb +89 -0
- data/lib/milk/templates/bzrignore +3 -0
- data/lib/milk/templates/rackup +16 -0
- data/lib/milk/templates/rakefile +4 -0
- data/lib/milk/templates/restart +1 -0
- metadata +246 -26
- data/.document +0 -5
- data/.gitignore +0 -5
- data/README.rdoc +0 -7
- data/test/milk_test.rb +0 -7
- data/test/test_helper.rb +0 -10
@@ -0,0 +1,73 @@
|
|
1
|
+
module Milk
|
2
|
+
class Component
|
3
|
+
@@props = []
|
4
|
+
@@fields = []
|
5
|
+
|
6
|
+
def self.local_properties(*props)
|
7
|
+
@@props += props
|
8
|
+
# Dynamically set the yaml dumper to only store local properties
|
9
|
+
meta_def :to_yaml_properties do
|
10
|
+
props
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.global_properties(*props)
|
15
|
+
@@props += props
|
16
|
+
# TODO: put hook in save
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.component_array(field, label, com_class)
|
20
|
+
# TODO: create hooks to add field
|
21
|
+
end
|
22
|
+
def self.image_chooser(field, label, alt_field)
|
23
|
+
# TODO: create hooks to add field
|
24
|
+
end
|
25
|
+
def self.markdown_field(field, label)
|
26
|
+
# TODO: create hooks to add field
|
27
|
+
end
|
28
|
+
def self.page_chooser(field, label)
|
29
|
+
# TODO: create hooks to add field
|
30
|
+
end
|
31
|
+
def self.sprite_chooser(field, label, main_class, sub_classes)
|
32
|
+
# TODO: create hooks to add field
|
33
|
+
end
|
34
|
+
def self.text_field(field, label)
|
35
|
+
# TODO: create hooks to add field
|
36
|
+
end
|
37
|
+
|
38
|
+
def initilize(*props)
|
39
|
+
props.each_pair do |key, value|
|
40
|
+
raise "Undefined property \"" + key.to_s + "\"" unless @@props.member? key
|
41
|
+
self.instance_variable_set(key, value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def load_settings
|
46
|
+
name = self.class.to_s.gsub(/([a-z])([A-Z])/) { "#{$1}_#{$2}" }.downcase
|
47
|
+
yml_file = Milk::PAGES_DIR + "/global/" + name + ".yml"
|
48
|
+
if File.file? yml_file
|
49
|
+
YAML.load_file(yml_file)
|
50
|
+
else
|
51
|
+
{}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def edit
|
56
|
+
self.inspect
|
57
|
+
end
|
58
|
+
|
59
|
+
def view
|
60
|
+
globals = load_settings
|
61
|
+
globals.each_pair do |key, value|
|
62
|
+
self.instance_variable_set(('@' + key).to_sym, value)
|
63
|
+
end unless globals.nil?
|
64
|
+
name = self.class.to_s.gsub(/([a-z])([A-Z])/) { "#{$1}_#{$2}" }.downcase
|
65
|
+
haml_file = Milk::COMPONENTS_DIR + "/" + name + ".haml"
|
66
|
+
raise "Missing template \"" + haml_file + "\"" unless File.file? haml_file
|
67
|
+
::Haml::Engine.new(File.read(haml_file), :filename => haml_file).render(self)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
data/lib/milk/field.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Milk
|
2
|
+
class Field
|
3
|
+
end
|
4
|
+
|
5
|
+
module Fields
|
6
|
+
# Autoload the fields of the user space app into the root namespace for easy use
|
7
|
+
Dir.glob(Milk::LIB_DIR + "/milk/fields/*.rb").each do |c|
|
8
|
+
name = c.split('/').last.gsub(/(.*)\.rb/) { $1 }
|
9
|
+
class_name = name.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
10
|
+
path = c.gsub(/(.*)\.rb/) { $1 }
|
11
|
+
autoload class_name.to_sym, path
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
!!! xml
|
2
|
+
!!! 1.1
|
3
|
+
%html{:xmlns =>"http://www.w3.org/1999/xhtml"}
|
4
|
+
%head
|
5
|
+
%link{ :rel => "shortcut icon", :href => "/favicon.ico", :type => "image/x-icon"}/
|
6
|
+
%link{ :href => "http://static.creationix.com/skins/ui-lightness/jquery-ui-1.7.1.custom.css", :media => "screen", :rel => "stylesheet", :type => "text/css" }/
|
7
|
+
%title&= "Edit #{@pagename}"
|
8
|
+
%script{:src=>"http://static.creationix.com/scripts/jquery-1.3.2.min.js", :type=>"text/javascript"}
|
9
|
+
%script{:src=>"http://static.creationix.com/scripts/jquery-ui-1.7.1.custom.min.js", :type=>"text/javascript"}
|
10
|
+
%body= yield
|
data/lib/milk/haxe.rb
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
module Milk
|
2
|
+
class Haxe
|
3
|
+
HAXE_HEADER_REGEX = /^\/\/ COMPILE_FLAGS (.*)$/
|
4
|
+
HAXE_BIN = Milk::BIN_DIR+"/haxe"
|
5
|
+
ENV['HAXE_LIBRARY_PATH'] = File.absolute_path(Milk::BIN_DIR+"/../haxe/std")
|
6
|
+
HAXE_DIR = Milk::COMPONENTS_DIR + "/haxe"
|
7
|
+
|
8
|
+
def initialize(page_name)
|
9
|
+
@page_name = page_name
|
10
|
+
base_path = HAXE_DIR + "/" + @page_name
|
11
|
+
@haxe = base_path + ".hx"
|
12
|
+
@haxe_swf = @haxe + ".swf"
|
13
|
+
@swfmill = base_path + ".xml"
|
14
|
+
@swfmill_swf = @swfmill + ".swf"
|
15
|
+
|
16
|
+
raise PageNotFoundError if not File.file? @haxe
|
17
|
+
|
18
|
+
# Compile swfmill resource if it exists and the binary is nonexistant/outdated
|
19
|
+
if File.file? @swfmill
|
20
|
+
if (not (File.file?(@swfmill_swf)) or (File.mtime(@swfmill) > File.mtime(@swfmill_swf)))
|
21
|
+
compile_swfmill
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Compile haxe binary is nonexistant/outdated
|
26
|
+
# if a swfmill resource exists, it can outdate the main swf too
|
27
|
+
if (not (File.file?(@haxe_swf)) \
|
28
|
+
or (File.mtime(@haxe) > File.mtime(@haxe_swf)) \
|
29
|
+
or (File.file?(@swfmill_swf) \
|
30
|
+
and File.mtime(@swfmill_swf) > File.mtime(@haxe_swf) \
|
31
|
+
) \
|
32
|
+
)
|
33
|
+
compile_haxe
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def render(mode='view')
|
38
|
+
open(@haxe_swf)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def popen3(*cmd)
|
44
|
+
pw = IO::pipe # pipe[0] for read, pipe[1] for write
|
45
|
+
pr = IO::pipe
|
46
|
+
pe = IO::pipe
|
47
|
+
|
48
|
+
pid = fork{
|
49
|
+
# child
|
50
|
+
fork{
|
51
|
+
# grandchild
|
52
|
+
pw[1].close
|
53
|
+
STDIN.reopen(pw[0])
|
54
|
+
pw[0].close
|
55
|
+
|
56
|
+
pr[0].close
|
57
|
+
STDOUT.reopen(pr[1])
|
58
|
+
pr[1].close
|
59
|
+
|
60
|
+
pe[0].close
|
61
|
+
STDERR.reopen(pe[1])
|
62
|
+
pe[1].close
|
63
|
+
|
64
|
+
exec(*cmd)
|
65
|
+
}
|
66
|
+
exit!(0)
|
67
|
+
}
|
68
|
+
|
69
|
+
pw[0].close
|
70
|
+
pr[1].close
|
71
|
+
pe[1].close
|
72
|
+
Process.waitpid(pid)
|
73
|
+
pi = [pw[1], pr[0], pe[0]]
|
74
|
+
pw[1].sync = true
|
75
|
+
if defined? yield
|
76
|
+
begin
|
77
|
+
return yield(*pi)
|
78
|
+
ensure
|
79
|
+
pi.each{|p| p.close unless p.closed?}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
pi
|
83
|
+
end
|
84
|
+
|
85
|
+
def run_command(*command)
|
86
|
+
popen3(*command) do |stdin, stdout, stderr|
|
87
|
+
stdin.close
|
88
|
+
error = stderr.read
|
89
|
+
if error.length > 0
|
90
|
+
raise ExternalCompilerError.new(error.inspect)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def compile_swfmill
|
96
|
+
command = ["swfmill", "simple", @swfmill, @swfmill_swf]
|
97
|
+
Dir.chdir(Milk::HAXE_DIR)
|
98
|
+
run_command *command
|
99
|
+
end
|
100
|
+
|
101
|
+
def compile_haxe
|
102
|
+
command = [HAXE_BIN,
|
103
|
+
"-swf-version", "9", "--flash-strict",
|
104
|
+
"-swf", @haxe_swf,
|
105
|
+
"-main", @page_name,
|
106
|
+
"-cp", Milk::HAXE_DIR]
|
107
|
+
open @haxe, "r" do |file|
|
108
|
+
line = file.readline
|
109
|
+
if HAXE_HEADER_REGEX =~ line
|
110
|
+
HAXE_HEADER_REGEX.match(line)[1].split(' ').each do |item|
|
111
|
+
command.push(item)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
if File.file? @swfmill_swf
|
116
|
+
# For some reason, haxe doesn't like a full path here, so convert
|
117
|
+
# to relative.
|
118
|
+
command.push('-swf-lib')
|
119
|
+
command.push(@swfmill_swf.split("/").last)
|
120
|
+
end
|
121
|
+
run_command *command
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
# An exception raised by haxe or swfmill.
|
127
|
+
class ExternalCompilerError < StandardError
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
|
data/lib/milk/page.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Milk
|
2
|
+
class Page
|
3
|
+
def self.find(pagename)
|
4
|
+
yaml_file = Milk::PAGES_DIR + "/" + pagename.gsub(/\//, '.') + ".yml"
|
5
|
+
raise PageNotFoundError unless File.readable? yaml_file
|
6
|
+
YAML.load_file(yaml_file)
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(pagename)
|
10
|
+
@pagename = pagename
|
11
|
+
@title = pagename
|
12
|
+
@components = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def edit
|
16
|
+
filename = TEMPLATE_DIR + "/xhtml.haml"
|
17
|
+
::Haml::Engine.new(File.read(filename), :filename => filename).render(self) do
|
18
|
+
@components.map {|c| c.edit}.join("\n")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def view
|
23
|
+
filename = Milk::COMPONENTS_DIR + "/xhtml.haml"
|
24
|
+
html = ::Haml::Engine.new(File.read(filename), :filename => filename).render(self) do
|
25
|
+
@components.map {|c| c.view}.join("\n")
|
26
|
+
end
|
27
|
+
save_to_cache html
|
28
|
+
html
|
29
|
+
end
|
30
|
+
|
31
|
+
def save_to_cache(html=nil)
|
32
|
+
html ||= view
|
33
|
+
folder = Milk::PUBLIC_DIR + "/cache/" + @pagename
|
34
|
+
cache_file = folder + "/index.html"
|
35
|
+
|
36
|
+
# Make the folder if it doesn't exist
|
37
|
+
FileUtils.mkdir_p folder
|
38
|
+
open(cache_file, "w") { |file| file.write html }
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
data/lib/milk/tasks.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
|
2
|
+
desc "Loads the Milk environment, mainly used as a dependency"
|
3
|
+
task :environment do |t|
|
4
|
+
MILK_ROOT ||= t.application.original_dir
|
5
|
+
require "milk"
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Build the site from scratch if needed"
|
9
|
+
task :default => [:install, :compile_sass]
|
10
|
+
|
11
|
+
desc "Create the skeleton structure, install the rackup file, and init the bzr repo"
|
12
|
+
task :install => :environment do
|
13
|
+
|
14
|
+
|
15
|
+
# Create missing directories
|
16
|
+
[ Milk::COMPONENTS_DIR + "/haxe", \
|
17
|
+
Milk::PAGES_DIR + "/global", \
|
18
|
+
Milk::PUBLIC_DIR + "/cache", \
|
19
|
+
Milk::PUBLIC_DIR + "/images", \
|
20
|
+
Milk::PUBLIC_DIR + "/style", \
|
21
|
+
MILK_ROOT + "/tmp", \
|
22
|
+
].each do |path|
|
23
|
+
FileUtils.mkdir_p(path, :verbose=>true) unless File.directory?(path)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Install/update some template files
|
27
|
+
[ ["rackup", MILK_ROOT + "/config.ru"], \
|
28
|
+
["bzrignore", MILK_ROOT + "/.bzrignore"], \
|
29
|
+
["rakefile", MILK_ROOT + "/Rakefile"], \
|
30
|
+
["restart", MILK_ROOT+"/tmp/restart.txt"] \
|
31
|
+
].each do |pair|
|
32
|
+
source = Milk::LIB_DIR+"/milk/templates/" + pair.first
|
33
|
+
target = pair.last
|
34
|
+
FileUtils.install(source, target, :verbose=>true, :preserve => true) \
|
35
|
+
unless (File.file?(target) && File.mtime(source) <= File.mtime(target))
|
36
|
+
end
|
37
|
+
|
38
|
+
# Set up bzr repository
|
39
|
+
if !File.directory? MILK_ROOT+"/.bzr"
|
40
|
+
exec("cd #{MILK_ROOT} && bzr init && bzr add && bzr ci -m 'Commit initial Milk structure'")
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "Compile all the sass files in the component dir and merge into style.css"
|
46
|
+
task :compile_sass => :environment do
|
47
|
+
style_file = Milk::PUBLIC_DIR + "/style/style.css"
|
48
|
+
style_mtime = (File.file? style_file) && (File.mtime style_file)
|
49
|
+
if (!File.file? style_file) || Dir.glob(Milk::COMPONENTS_DIR + "/*.sass").any? { |sass| (File.mtime sass) > style_mtime }
|
50
|
+
puts "Updating #{style_file}..."
|
51
|
+
require 'haml'
|
52
|
+
open(style_file, "w") do |style|
|
53
|
+
Dir.glob(Milk::COMPONENTS_DIR + "/*.sass").each do |c|
|
54
|
+
puts "Adding #{c}"
|
55
|
+
open(c, "r") do |file|
|
56
|
+
style.write Sass::Engine.new(file.read, :filename=>c, :style=>:compressed).render.strip
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
desc "Delete the cache files and the generated style file"
|
64
|
+
task :clean => :environment do
|
65
|
+
cachedir = Milk::PUBLIC_DIR+"/cache"
|
66
|
+
FileUtils.rm_rf(cachedir, :verbose=>true)
|
67
|
+
FileUtils.mkdir_p(cachedir, :verbose=>true)
|
68
|
+
FileUtils.rm(Milk::PUBLIC_DIR+"/style/style.css", :verbose=>true)
|
69
|
+
end
|
70
|
+
|
71
|
+
desc "Start up an interactive ruby session with Milk preloaded"
|
72
|
+
task :console => :environment do
|
73
|
+
# Remove the task name from argv so irb doesn't explode
|
74
|
+
ARGV.shift
|
75
|
+
|
76
|
+
# Start an irb session with the environment loaded
|
77
|
+
require "irb"
|
78
|
+
IRB.start(__FILE__)
|
79
|
+
end
|
80
|
+
|
81
|
+
desc "Start up a development server using thin"
|
82
|
+
task :server do
|
83
|
+
exec "rackup -s thin"
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
::MILK_ROOT = ::File.absolute_path(::File.dirname(__FILE__))
|
2
|
+
require '../lib/milk'
|
3
|
+
|
4
|
+
# use Lock
|
5
|
+
if %w{rackup thin}.member?($0.rpartition('/').last)
|
6
|
+
puts "Running in development mode"
|
7
|
+
use ContentLength
|
8
|
+
use Reloader
|
9
|
+
run Cascade.new([
|
10
|
+
File.new('public'),
|
11
|
+
Milk::Application.new
|
12
|
+
])
|
13
|
+
else
|
14
|
+
run Milk::Application.new
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
Touch this file to restart the running passenger server.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: milk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Caswell
|
@@ -9,40 +9,261 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
13
|
-
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
12
|
+
date: 2009-05-14 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.0
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: maruku
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.6.0
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: haml
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.0.9
|
44
|
+
version:
|
45
|
+
description: Milk is a rack based cms system built for ease of use and simplicity. Milk tastes great with and without cookies. The public facing aspect is static html files, and the admin side is super easy to use.
|
17
46
|
email: tim@creationix.com
|
18
47
|
executables:
|
19
48
|
- milk
|
20
49
|
extensions: []
|
21
50
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
24
|
-
- README.rdoc
|
51
|
+
extra_rdoc_files: []
|
52
|
+
|
25
53
|
files:
|
26
|
-
-
|
27
|
-
-
|
28
|
-
- LICENSE
|
29
|
-
- README.rdoc
|
54
|
+
- INSTALL
|
55
|
+
- README
|
30
56
|
- Rakefile
|
57
|
+
- test
|
58
|
+
- bin
|
59
|
+
- bin/milk
|
60
|
+
- LICENSE
|
61
|
+
- doc
|
62
|
+
- doc/rdoc-style.css
|
63
|
+
- doc/index.html
|
64
|
+
- doc/fr_class_index.html
|
65
|
+
- doc/classes
|
66
|
+
- doc/classes/Object.html
|
67
|
+
- doc/classes/Milk
|
68
|
+
- doc/classes/Milk/Page.html
|
69
|
+
- doc/classes/Milk/PageNotFoundError.html
|
70
|
+
- doc/classes/Milk/Application.html
|
71
|
+
- doc/classes/Milk/Fields.html
|
72
|
+
- doc/classes/Milk/ExternalCompilerError.html
|
73
|
+
- doc/classes/Milk/Component.src
|
74
|
+
- doc/classes/Milk/Component.src/M000022.html
|
75
|
+
- doc/classes/Milk/Component.src/M000018.html
|
76
|
+
- doc/classes/Milk/Component.src/M000016.html
|
77
|
+
- doc/classes/Milk/Component.src/M000024.html
|
78
|
+
- doc/classes/Milk/Component.src/M000014.html
|
79
|
+
- doc/classes/Milk/Component.src/M000020.html
|
80
|
+
- doc/classes/Milk/Component.src/M000023.html
|
81
|
+
- doc/classes/Milk/Component.src/M000015.html
|
82
|
+
- doc/classes/Milk/Component.src/M000017.html
|
83
|
+
- doc/classes/Milk/Component.src/M000019.html
|
84
|
+
- doc/classes/Milk/Component.src/M000021.html
|
85
|
+
- doc/classes/Milk/Component.src/M000025.html
|
86
|
+
- doc/classes/Milk/Haxe.src
|
87
|
+
- doc/classes/Milk/Haxe.src/M000005.html
|
88
|
+
- doc/classes/Milk/Haxe.src/M000006.html
|
89
|
+
- doc/classes/Milk/Fields
|
90
|
+
- doc/classes/Milk/Fields/PageChooser.html
|
91
|
+
- doc/classes/Milk/Fields/MarkdownField.html
|
92
|
+
- doc/classes/Milk/Fields/ComponentArray.html
|
93
|
+
- doc/classes/Milk/Fields/SpriteChooser.html
|
94
|
+
- doc/classes/Milk/Fields/ImageChooser.html
|
95
|
+
- doc/classes/Milk/Fields/TextField.html
|
96
|
+
- doc/classes/Milk/Page.src
|
97
|
+
- doc/classes/Milk/Page.src/M000012.html
|
98
|
+
- doc/classes/Milk/Page.src/M000009.html
|
99
|
+
- doc/classes/Milk/Page.src/M000011.html
|
100
|
+
- doc/classes/Milk/Page.src/M000013.html
|
101
|
+
- doc/classes/Milk/Page.src/M000010.html
|
102
|
+
- doc/classes/Milk/Haxe.html
|
103
|
+
- doc/classes/Milk/Field.html
|
104
|
+
- doc/classes/Milk/Application.src
|
105
|
+
- doc/classes/Milk/Application.src/M000007.html
|
106
|
+
- doc/classes/Milk/Application.src/M000008.html
|
107
|
+
- doc/classes/Milk/Component.html
|
108
|
+
- doc/classes/Milk.html
|
109
|
+
- doc/classes/Milk.src
|
110
|
+
- doc/classes/Milk.src/M000005.html
|
111
|
+
- doc/classes/Object.src
|
112
|
+
- doc/classes/Object.src/M000004.html
|
113
|
+
- doc/classes/Object.src/M000003.html
|
114
|
+
- doc/classes/Object.src/M000002.html
|
115
|
+
- doc/classes/Object.src/M000001.html
|
116
|
+
- doc/files
|
117
|
+
- doc/files/Rakefile.html
|
118
|
+
- doc/files/INSTALL.html
|
119
|
+
- doc/files/README.html
|
120
|
+
- doc/files/LICENSE.html
|
121
|
+
- doc/files/bin
|
122
|
+
- doc/files/bin/milk.html
|
123
|
+
- doc/files/doc
|
124
|
+
- doc/files/doc/rdoc-style_css.html
|
125
|
+
- doc/files/doc/fr_class_index_html.html
|
126
|
+
- doc/files/doc/fr_file_index_html.html
|
127
|
+
- doc/files/doc/index_html.html
|
128
|
+
- doc/files/doc/fr_method_index_html.html
|
129
|
+
- doc/files/doc/created_rid.html
|
130
|
+
- doc/files/doc/classes
|
131
|
+
- doc/files/doc/classes/Milk_html.html
|
132
|
+
- doc/files/doc/classes/Milk
|
133
|
+
- doc/files/doc/classes/Milk/PageNotFoundError_html.html
|
134
|
+
- doc/files/doc/classes/Milk/Haxe_html.html
|
135
|
+
- doc/files/doc/classes/Milk/Field_html.html
|
136
|
+
- doc/files/doc/classes/Milk/Component_src
|
137
|
+
- doc/files/doc/classes/Milk/Component_src/M000022_html.html
|
138
|
+
- doc/files/doc/classes/Milk/Component_src/M000025_html.html
|
139
|
+
- doc/files/doc/classes/Milk/Component_src/M000017_html.html
|
140
|
+
- doc/files/doc/classes/Milk/Component_src/M000021_html.html
|
141
|
+
- doc/files/doc/classes/Milk/Component_src/M000024_html.html
|
142
|
+
- doc/files/doc/classes/Milk/Component_src/M000019_html.html
|
143
|
+
- doc/files/doc/classes/Milk/Component_src/M000018_html.html
|
144
|
+
- doc/files/doc/classes/Milk/Component_src/M000023_html.html
|
145
|
+
- doc/files/doc/classes/Milk/Component_src/M000015_html.html
|
146
|
+
- doc/files/doc/classes/Milk/Component_src/M000016_html.html
|
147
|
+
- doc/files/doc/classes/Milk/Component_src/M000020_html.html
|
148
|
+
- doc/files/doc/classes/Milk/Component_src/M000014_html.html
|
149
|
+
- doc/files/doc/classes/Milk/Application_src
|
150
|
+
- doc/files/doc/classes/Milk/Application_src/M000007_html.html
|
151
|
+
- doc/files/doc/classes/Milk/Application_src/M000008_html.html
|
152
|
+
- doc/files/doc/classes/Milk/Haxe_src
|
153
|
+
- doc/files/doc/classes/Milk/Haxe_src/M000005_html.html
|
154
|
+
- doc/files/doc/classes/Milk/Haxe_src/M000006_html.html
|
155
|
+
- doc/files/doc/classes/Milk/ExternalCompilerError_html.html
|
156
|
+
- doc/files/doc/classes/Milk/Fields
|
157
|
+
- doc/files/doc/classes/Milk/Fields/SpriteChooser_html.html
|
158
|
+
- doc/files/doc/classes/Milk/Fields/PageChooser_html.html
|
159
|
+
- doc/files/doc/classes/Milk/Fields/ImageChooser_html.html
|
160
|
+
- doc/files/doc/classes/Milk/Fields/ComponentArray_html.html
|
161
|
+
- doc/files/doc/classes/Milk/Fields/MarkdownField_html.html
|
162
|
+
- doc/files/doc/classes/Milk/Fields/TextField_html.html
|
163
|
+
- doc/files/doc/classes/Milk/Page_html.html
|
164
|
+
- doc/files/doc/classes/Milk/Fields_html.html
|
165
|
+
- doc/files/doc/classes/Milk/Component_html.html
|
166
|
+
- doc/files/doc/classes/Milk/Page_src
|
167
|
+
- doc/files/doc/classes/Milk/Page_src/M000010_html.html
|
168
|
+
- doc/files/doc/classes/Milk/Page_src/M000013_html.html
|
169
|
+
- doc/files/doc/classes/Milk/Page_src/M000011_html.html
|
170
|
+
- doc/files/doc/classes/Milk/Page_src/M000009_html.html
|
171
|
+
- doc/files/doc/classes/Milk/Page_src/M000012_html.html
|
172
|
+
- doc/files/doc/classes/Milk/Application_html.html
|
173
|
+
- doc/files/doc/classes/Object_html.html
|
174
|
+
- doc/files/doc/classes/Object_src
|
175
|
+
- doc/files/doc/classes/Object_src/M000001_html.html
|
176
|
+
- doc/files/doc/classes/Object_src/M000004_html.html
|
177
|
+
- doc/files/doc/classes/Object_src/M000003_html.html
|
178
|
+
- doc/files/doc/classes/Object_src/M000002_html.html
|
179
|
+
- doc/files/doc/files
|
180
|
+
- doc/files/doc/files/README_html.html
|
181
|
+
- doc/files/doc/files/LICENSE_html.html
|
182
|
+
- doc/files/doc/files/Rakefile_html.html
|
183
|
+
- doc/files/doc/files/bin
|
184
|
+
- doc/files/doc/files/bin/milk_html.html
|
185
|
+
- doc/files/doc/files/lib
|
186
|
+
- doc/files/doc/files/lib/milk_rb_html.html
|
187
|
+
- doc/files/doc/files/lib/milk
|
188
|
+
- doc/files/doc/files/lib/milk/page_rb_html.html
|
189
|
+
- doc/files/doc/files/lib/milk/haxe_rb_html.html
|
190
|
+
- doc/files/doc/files/lib/milk/field_rb_html.html
|
191
|
+
- doc/files/doc/files/lib/milk/fields
|
192
|
+
- doc/files/doc/files/lib/milk/fields/text_field_rb_html.html
|
193
|
+
- doc/files/doc/files/lib/milk/fields/page_chooser_rb_html.html
|
194
|
+
- doc/files/doc/files/lib/milk/fields/image_chooser_rb_html.html
|
195
|
+
- doc/files/doc/files/lib/milk/fields/sprite_chooser_rb_html.html
|
196
|
+
- doc/files/doc/files/lib/milk/fields/xhtml_haml_html.html
|
197
|
+
- doc/files/doc/files/lib/milk/fields/component_array_rb_html.html
|
198
|
+
- doc/files/doc/files/lib/milk/fields/markdown_field_rb_html.html
|
199
|
+
- doc/files/doc/files/lib/milk/tasks_rb_html.html
|
200
|
+
- doc/files/doc/files/lib/milk/templates
|
201
|
+
- doc/files/doc/files/lib/milk/templates/rackup_html.html
|
202
|
+
- doc/files/doc/files/lib/milk/templates/bzrignore_html.html
|
203
|
+
- doc/files/doc/files/lib/milk/templates/restart_html.html
|
204
|
+
- doc/files/doc/files/lib/milk/templates/rakefile_html.html
|
205
|
+
- doc/files/doc/files/lib/milk/application_rb_html.html
|
206
|
+
- doc/files/doc/files/lib/milk/component_rb_html.html
|
207
|
+
- doc/files/doc/files/INSTALL_html.html
|
208
|
+
- doc/files/lib
|
209
|
+
- doc/files/lib/milk_rb.html
|
210
|
+
- doc/files/lib/milk
|
211
|
+
- doc/files/lib/milk/tasks_rb.html
|
212
|
+
- doc/files/lib/milk/component_rb.html
|
213
|
+
- doc/files/lib/milk/fields
|
214
|
+
- doc/files/lib/milk/fields/image_chooser_rb.html
|
215
|
+
- doc/files/lib/milk/fields/sprite_chooser_rb.html
|
216
|
+
- doc/files/lib/milk/fields/xhtml_haml.html
|
217
|
+
- doc/files/lib/milk/fields/markdown_field_rb.html
|
218
|
+
- doc/files/lib/milk/fields/component_array_rb.html
|
219
|
+
- doc/files/lib/milk/fields/text_field_rb.html
|
220
|
+
- doc/files/lib/milk/fields/page_chooser_rb.html
|
221
|
+
- doc/files/lib/milk/application_rb.html
|
222
|
+
- doc/files/lib/milk/field_rb.html
|
223
|
+
- doc/files/lib/milk/haxe_rb.html
|
224
|
+
- doc/files/lib/milk/page_rb.html
|
225
|
+
- doc/files/lib/milk/templates
|
226
|
+
- doc/files/lib/milk/templates/rackup.html
|
227
|
+
- doc/files/lib/milk/templates/bzrignore.html
|
228
|
+
- doc/files/lib/milk/templates/rakefile.html
|
229
|
+
- doc/files/lib/milk/templates/restart.html
|
230
|
+
- doc/fr_file_index.html
|
231
|
+
- doc/fr_method_index.html
|
232
|
+
- doc/created.rid
|
233
|
+
- lib
|
31
234
|
- lib/milk.rb
|
32
|
-
-
|
33
|
-
-
|
34
|
-
|
35
|
-
|
235
|
+
- lib/milk
|
236
|
+
- lib/milk/tasks.rb
|
237
|
+
- lib/milk/field.rb
|
238
|
+
- lib/milk/haxe.rb
|
239
|
+
- lib/milk/fields
|
240
|
+
- lib/milk/fields/component_array.rb
|
241
|
+
- lib/milk/fields/sprite_chooser.rb
|
242
|
+
- lib/milk/fields/image_chooser.rb
|
243
|
+
- lib/milk/fields/markdown_field.rb
|
244
|
+
- lib/milk/fields/text_field.rb
|
245
|
+
- lib/milk/fields/page_chooser.rb
|
246
|
+
- lib/milk/fields/xhtml.haml
|
247
|
+
- lib/milk/application.rb
|
248
|
+
- lib/milk/page.rb
|
249
|
+
- lib/milk/templates
|
250
|
+
- lib/milk/templates/rackup
|
251
|
+
- lib/milk/templates/restart
|
252
|
+
- lib/milk/templates/bzrignore
|
253
|
+
- lib/milk/templates/rakefile
|
254
|
+
- lib/milk/component.rb
|
255
|
+
has_rdoc: false
|
256
|
+
homepage: http://milk.rubyforge.org
|
36
257
|
post_install_message:
|
37
|
-
rdoc_options:
|
38
|
-
|
258
|
+
rdoc_options: []
|
259
|
+
|
39
260
|
require_paths:
|
40
261
|
- lib
|
41
262
|
required_ruby_version: !ruby/object:Gem::Requirement
|
42
263
|
requirements:
|
43
264
|
- - ">="
|
44
265
|
- !ruby/object:Gem::Version
|
45
|
-
version: "
|
266
|
+
version: "1.9"
|
46
267
|
version:
|
47
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
269
|
requirements:
|
@@ -50,13 +271,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
271
|
- !ruby/object:Gem::Version
|
51
272
|
version: "0"
|
52
273
|
version:
|
53
|
-
requirements:
|
54
|
-
|
274
|
+
requirements:
|
275
|
+
- none
|
55
276
|
rubyforge_project: milk
|
56
277
|
rubygems_version: 1.3.1
|
57
278
|
signing_key:
|
58
279
|
specification_version: 2
|
59
|
-
summary:
|
60
|
-
test_files:
|
61
|
-
|
62
|
-
- test/milk_test.rb
|
280
|
+
summary: Milk is a rack based content management system built for ease of use and simplicity. Milk tastes great with and without cookies.
|
281
|
+
test_files: []
|
282
|
+
|