siterest 0.1.0.pre6 → 0.1.0.pre8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,9 +1,17 @@
1
- source "http://rubygems.org"
1
+ source :rubygems
2
+
2
3
  gem 'h2o'
3
- gem 'activeresource', '~> 3.0.0.beta4'
4
+ gem 'activeresource', '~> 3.0.0'
4
5
  gem 'launchy'
5
6
  gem 'sinatra'
6
7
  gem 'mime-types', :require => 'mime/types'
7
8
  gem 'rest-client'
8
9
  gem 'rdiscount'
9
- # gem 'encoded_attachment', :git => 'http://github.com/nragaz/encoded_attachment.git'
10
+ gem 'rspec'
11
+
12
+ gem 'will_paginate', '>= 3.0.pre2'
13
+ # gem 'encoded_attachment', :git => 'http://github.com/nragaz/encoded_attachment.git'
14
+
15
+ group :test do
16
+ gem 'ruby-debug19', :require => 'ruby-debug'
17
+ end
data/Gemfile.lock CHANGED
@@ -1,38 +1,67 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (3.0.0.rc)
5
- activesupport (= 3.0.0.rc)
4
+ activemodel (3.0.5)
5
+ activesupport (= 3.0.5)
6
6
  builder (~> 2.1.2)
7
- i18n (~> 0.4.1)
8
- activeresource (3.0.0.rc)
9
- activemodel (= 3.0.0.rc)
10
- activesupport (= 3.0.0.rc)
11
- activesupport (3.0.0.rc)
7
+ i18n (~> 0.4)
8
+ activeresource (3.0.5)
9
+ activemodel (= 3.0.5)
10
+ activesupport (= 3.0.5)
11
+ activesupport (3.0.5)
12
+ archive-tar-minitar (0.5.2)
12
13
  builder (2.1.2)
13
- configuration (1.1.0)
14
- h2o (0.2)
15
- i18n (0.4.1)
16
- launchy (0.3.5)
14
+ columnize (0.3.2)
15
+ configuration (1.2.0)
16
+ diff-lcs (1.1.2)
17
+ h2o (0.3.1)
18
+ i18n (0.5.0)
19
+ launchy (0.4.0)
17
20
  configuration (>= 0.0.5)
18
21
  rake (>= 0.8.1)
22
+ linecache19 (0.5.11)
23
+ ruby_core_source (>= 0.1.4)
19
24
  mime-types (1.16)
20
- rack (1.2.1)
25
+ rack (1.2.2)
21
26
  rake (0.8.7)
22
- rdiscount (1.6.5)
23
- rest-client (1.4.2)
27
+ rdiscount (1.6.8)
28
+ rest-client (1.6.1)
24
29
  mime-types (>= 1.16)
25
- sinatra (1.0)
26
- rack (>= 1.0)
30
+ rspec (2.5.0)
31
+ rspec-core (~> 2.5.0)
32
+ rspec-expectations (~> 2.5.0)
33
+ rspec-mocks (~> 2.5.0)
34
+ rspec-core (2.5.1)
35
+ rspec-expectations (2.5.0)
36
+ diff-lcs (~> 1.1.2)
37
+ rspec-mocks (2.5.0)
38
+ ruby-debug-base19 (0.11.24)
39
+ columnize (>= 0.3.1)
40
+ linecache19 (>= 0.5.11)
41
+ ruby_core_source (>= 0.1.4)
42
+ ruby-debug19 (0.11.6)
43
+ columnize (>= 0.3.1)
44
+ linecache19 (>= 0.5.11)
45
+ ruby-debug-base19 (>= 0.11.19)
46
+ ruby_core_source (0.1.4)
47
+ archive-tar-minitar (>= 0.5.2)
48
+ sinatra (1.2.0)
49
+ rack (~> 1.1)
50
+ tilt (>= 1.2.2, < 2.0)
51
+ tilt (1.2.2)
52
+ will_paginate (3.0.pre2)
27
53
 
28
54
  PLATFORMS
29
55
  ruby
30
56
 
31
57
  DEPENDENCIES
32
- activeresource (~> 3.0.0.beta4)
58
+ activeresource (~> 3.0.0)
33
59
  h2o
34
60
  launchy
35
61
  mime-types
36
62
  rdiscount
37
63
  rest-client
64
+ rspec
65
+ ruby-debug19
38
66
  sinatra
67
+ will_paginate (>= 3.0.pre2)
data/Rakefile CHANGED
@@ -8,8 +8,9 @@ begin
8
8
  s.email = "taylor.luk@idealian.net"
9
9
  s.homepage = "http://www.siterest.com"
10
10
  s.authors = ["Taylor luk"]
11
- s.add_dependency 'h2o'
12
- s.add_dependency 'activeresource', '~> 3.0.0.beta4'
11
+ s.add_dependency 'h2o', '~> 0.3'
12
+ s.add_dependency 'will_paginate', '~> 3.0.pre2'
13
+ s.add_dependency 'activeresource', '~> 3.0.0'
13
14
  s.add_dependency 'launchy'
14
15
  s.add_dependency 'sinatra'
15
16
  s.add_dependency 'rest-client'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0.pre6
1
+ 0.1.0.pre8
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: This is my first blog post about this issue
3
+ excerpt: What every happens already happened, why are you so mad at yourself.
4
+ tags: [something, else]
5
+ ---
6
+
7
+ Hello world
8
+ ----
9
+
10
+ What every you do and don't panic
11
+
12
+
13
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
14
+
15
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: About us
3
+ tags: [one, two]
4
+ ---
5
+
6
+ We are idealian
7
+ ---
8
+
9
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
10
+
11
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
12
+
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Contact us
3
+ ---
4
+
5
+ contact us
6
+ ---
7
+
8
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
9
+
10
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
11
+
12
+ email
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: Welcome to my website
3
+ tags: one, two
4
+ ---
5
+
6
+ Welcome
7
+ ---
8
+
9
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
10
+
11
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
12
+
13
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
14
+
data/data/site.yaml ADDED
@@ -0,0 +1,2 @@
1
+ title: Example site
2
+ host: www.example.com
data/lib/siterest.rb CHANGED
@@ -1,7 +1,7 @@
1
- require "rubygems"
1
+ #require "rubygems"
2
2
 
3
- # require "bundler"
4
- # Bundler.setup
3
+ #require "bundler"
4
+ #Bundler.setup
5
5
 
6
6
  require 'yaml'
7
7
  require 'h2o'
@@ -11,6 +11,7 @@ require 'rest_client'
11
11
  require 'yaml'
12
12
  require 'rdiscount'
13
13
  require 'ostruct'
14
+ require 'rspec'
14
15
 
15
16
  module Siterest
16
17
 
@@ -23,10 +24,12 @@ module Siterest
23
24
  autoload :User, 'siterest/user'
24
25
  autoload :Site, 'siterest/site'
25
26
 
27
+ require 'siterest/template/paginate'
26
28
  # load template api
27
29
  require 'siterest/template/objects/site'
28
30
  require 'siterest/template/objects/page'
29
31
  require 'siterest/template/objects/article'
32
+ require 'siterest/template/objects/tag'
30
33
 
31
34
  # load filters
32
35
  require 'siterest/template/filters/core_filters'
@@ -53,4 +56,4 @@ module Siterest
53
56
  "#{self.url}/sites/:subdomain"
54
57
  end
55
58
 
56
- end
59
+ end
@@ -84,7 +84,31 @@ module Siterest
84
84
  require 'siterest/asset'
85
85
 
86
86
  Dir.glob("assets/*/*").each do |filename|
87
+
88
+ puts "processing #{filename}..."
89
+
90
+ existing = Asset.first(:params => {
91
+ :subdomain => site, :search => {:data_file_name_eq => File.basename(filename)}
92
+ })
93
+
94
+ if existing
95
+ existing.data = open(filename)
96
+ existing.save
97
+ else
98
+ Asset.create(:data => open(filename), :subdomain => site, :layout => true)
99
+ end
100
+
101
+ puts "#{existing ? 'Updated' : 'Created'} #{filename}"
102
+ end
103
+ end
104
+
105
+ def push_stylesheets(site)
106
+ require 'siterest/asset'
87
107
 
108
+ Dir.glob("assets/stylesheets/*").each do |filename|
109
+
110
+ puts "processing #{filename}..."
111
+
88
112
  existing = Asset.first(:params => {
89
113
  :subdomain => site, :search => {:data_file_name_eq => File.basename(filename)}
90
114
  })
@@ -100,9 +124,60 @@ module Siterest
100
124
  end
101
125
  end
102
126
 
103
- def request_path
104
-
127
+ def push_javascripts(site)
128
+ require 'siterest/asset'
129
+
130
+ Dir.glob("assets/javascripts/*").each do |filename|
131
+
132
+ puts "processing #{filename}..."
133
+
134
+ existing = Asset.first(:params => {
135
+ :subdomain => site, :search => {:data_file_name_eq => File.basename(filename)}
136
+ })
137
+
138
+ if existing
139
+ existing.data = open(filename)
140
+ existing.save
141
+ else
142
+ Asset.create(:data => open(filename), :subdomain => site, :layout => true)
143
+ end
144
+
145
+ puts "#{existing ? 'Updated' : 'Created'} #{filename}"
146
+ end
147
+ end
148
+
149
+ def push_pages(site)
150
+ pages = Page.all
151
+ debugger
152
+ pages.each do |p|
153
+ puts "processing #{p.title}..."
154
+
155
+ existing = Page.first(:params => {
156
+ :subdomain => site, :search => {:permalink_eq => p.permalink}
157
+ })
158
+
159
+ data = {
160
+ :title => p.title,
161
+ :body => p.body_source,
162
+ :template => p.template,
163
+ :tag_list => p.tags,
164
+ :subdomain => site,
165
+ :status => "published"
166
+ }
167
+
168
+ if existing
169
+ existing.update_attributes(data)
170
+ else
171
+ Page.create(data)
172
+ end
173
+
174
+ puts "#{existing ? 'Updated' : 'Created'} #{filename}"
175
+ end
105
176
  end
177
+
178
+ # def request_path
179
+ #
180
+ # end
106
181
 
107
182
  private
108
183
  def templates_path
@@ -41,7 +41,7 @@ module Siterest
41
41
  put "API token: ", false
42
42
  token = input.gets.chomp
43
43
 
44
- put "Server (default: http://api.siterest.com): ", false
44
+ put "Server (default: https://api.siterest.com): ", false
45
45
  server = input.gets.chomp
46
46
 
47
47
  server = server == '' ? 'https://api.siterest.com' : server
@@ -82,6 +82,91 @@ module Siterest
82
82
  end
83
83
  end
84
84
 
85
+ def push_templates
86
+ site = self.args.shift
87
+
88
+ put "Are you sure you want to overwrite your site design template(type in yes)"
89
+
90
+ put "[yes|no]: ", false
91
+ answer = input.gets.chomp
92
+
93
+ if answer == 'yes'
94
+ put "Pushing templates..."
95
+
96
+ client.push_templates(site)
97
+ else
98
+ put 'May be next time'
99
+ end
100
+ end
101
+
102
+ def push_assets
103
+ site = self.args.shift
104
+
105
+ put "Are you sure you want to overwrite your site assets(type in yes)"
106
+
107
+ put "[yes|no]: ", false
108
+ answer = input.gets.chomp
109
+
110
+ if answer == 'yes'
111
+ put "Pushing assets..."
112
+
113
+ client.push_assets(site)
114
+ else
115
+ put 'May be next time'
116
+ end
117
+ end
118
+
119
+ def push_stylesheets
120
+ site = self.args.shift
121
+
122
+ put "Are you sure you want to overwrite your site assets/stylesheets (type in yes)"
123
+
124
+ put "[yes|no]: ", false
125
+ answer = input.gets.chomp
126
+
127
+ if answer == 'yes'
128
+ put "Pushing assets/stylesheets..."
129
+
130
+ client.push_stylesheets(site)
131
+ else
132
+ put 'May be next time'
133
+ end
134
+ end
135
+
136
+ def push_javascripts
137
+ site = self.args.shift
138
+
139
+ put "Are you sure you want to overwrite your site assets/javascripts (type in yes)"
140
+
141
+ put "[yes|no]: ", false
142
+ answer = input.gets.chomp
143
+
144
+ if answer == 'yes'
145
+ put "Pushing assets/javascripts..."
146
+
147
+ client.push_javascripts(site)
148
+ else
149
+ put 'May be next time'
150
+ end
151
+ end
152
+
153
+ def push_pages
154
+ site = self.args.shift
155
+
156
+ put "Are you sure you want to overwrite your site data/pages (type in yes)"
157
+
158
+ put "[yes|no]: ", false
159
+ answer = input.gets.chomp
160
+
161
+ if answer == 'yes'
162
+ put "Pushing data/page"
163
+
164
+ client.push_pages(site)
165
+ else
166
+ put 'May be next time'
167
+ end
168
+ end
169
+
85
170
  def help
86
171
  put <<-TEXT
87
172
 
@@ -0,0 +1,6 @@
1
+ module Siterest
2
+ class Page < ActiveResource::Base
3
+ self.site = Siterest.site_resource_url
4
+ self.user = Siterest.token
5
+ end
6
+ end
@@ -2,11 +2,6 @@ require 'rubygems'
2
2
  require 'sinatra/base'
3
3
  require 'cgi'
4
4
 
5
- # require 'h2o'
6
- # require 'yaml'
7
- # require 'rdiscount'
8
- # require 'ostruct'
9
-
10
5
  module Siterest
11
6
  class Server < Sinatra::Base
12
7
  set :public, 'assets'
@@ -15,8 +10,8 @@ module Siterest
15
10
  render_h2o 'home.html', :page => Page.find('home')
16
11
  end
17
12
 
18
- get %r{/(news|blog)} do
19
- render_h2o 'list.html', :collection => Article.all
13
+ get %r{/(news|blog)$} do
14
+ render_h2o 'list.html', :collection => Article.all.paginate(:page => params[:page])
20
15
  end
21
16
 
22
17
  get %r{^/(\d{4})(?:/(\d{2}))$} do
@@ -36,15 +31,16 @@ module Siterest
36
31
  a.tags.include?(params[:tag])
37
32
  end
38
33
 
39
- render_h2o 'list.html', :collection => results
34
+ render_h2o 'list.html', :collection => results.paginate(:page => params[:page])
40
35
  end
41
36
 
42
37
  get '/:year/:month/:permalink' do
43
38
  render_h2o 'article.html', :page => Article.find(request.path_info[1..-1])
44
39
  end
45
40
 
46
- get '/:permalink' do
47
- render_h2o 'page.html', :page => Page.find(params[:permalink])
41
+ get '/*' do
42
+ page = Page.find(*params[:splat])
43
+ render_h2o page.template, :page => page
48
44
  end
49
45
  end
50
46
  end
@@ -53,6 +49,6 @@ def render_h2o(template, context = {})
53
49
  global = {
54
50
  :site => Site.new(YAML.load_file('data/site.yaml'))
55
51
  }
56
- template = H2o::Template.new("templates/#{template}")
52
+ template = H2o::Template.new(template, :searchpath => 'templates/')
57
53
  template.render global.merge(context)
58
54
  end
@@ -1,5 +1,5 @@
1
1
  module CoreFilters
2
-
2
+ require "active_support/inflector"
3
3
  # String filters
4
4
  def upper string
5
5
  string.to_s.upcase
@@ -43,6 +43,9 @@ module CoreFilters
43
43
  end
44
44
 
45
45
  #String Filters
46
+ def slugify(string)
47
+ ActiveSupport::Inflector.parameterize(string) unless string.nil?
48
+ end
46
49
  # def raw(stringish)
47
50
  # stringish.to_s.html_safe
48
51
  # end
@@ -47,6 +47,7 @@ module UrlFilters
47
47
  "<a #{html_attr_for(attributes)}>#{anchor}</a>"
48
48
  end
49
49
 
50
+
50
51
  # Paginate collection
51
52
  # * <tt>:previous_label</tt> -- default: "« Previous" (this parameter is called <tt>:prev_label</tt> in versions <b>2.3.2</b> and older!)
52
53
  # * <tt>:next_label</tt> -- default: "Next »"
@@ -57,7 +58,10 @@ module UrlFilters
57
58
  #
58
59
  def paginate(collection, options = {})
59
60
  options[:request_uri] = @context.resolve(:request_uri)
60
- Paginator.new.will_paginate(collection, options)
61
+ options[:per_page] = 5
62
+
63
+ renderer = Object.new.send(:extend, WillPaginate::ViewHelpers::H2oCompatible)
64
+ renderer.will_paginate(collection, options)
61
65
  end
62
66
 
63
67
  private
@@ -74,9 +78,4 @@ module UrlFilters
74
78
  end
75
79
 
76
80
  H2o::Filters << self
77
- end
78
- #
79
- # class Paginator
80
- # include ActionView::Helpers::TagHelper
81
- # include WillPaginate::H2oCompatible::ViewHelpers
82
- # end
81
+ end
@@ -1,7 +1,13 @@
1
1
 
2
2
  class Article < OpenStruct
3
- h2o_expose :title, :body, :excerpt, :author_name, :url, :permalink, :created_at, :published_at
3
+ h2o_expose :title, :body, :excerpt, :author_name, :url, :permalink, :created_at, :published_at, :tags
4
4
 
5
+ def tags
6
+ @table[:tags].map do |tag|
7
+ Tag.new(:name => tag)
8
+ end
9
+ end
10
+
5
11
  def self.all
6
12
  Dir.glob("data/articles/*.md").map do |path|
7
13
  build(path)
@@ -1,5 +1,9 @@
1
1
  class Page < OpenStruct
2
- h2o_expose :title, :body, :url, :permalink, :created_at, :published_at, :children
2
+ h2o_expose :title, :body, :url, :permalink, :created_at, :published_at, :children, :template
3
+
4
+ def template
5
+ @table[:template] || 'page.html'
6
+ end
3
7
 
4
8
  def self.all
5
9
  cache = {}
@@ -50,6 +54,11 @@ class Page < OpenStruct
50
54
 
51
55
  def self.build_content(filename)
52
56
  source = File.read(filename)
57
+
58
+ if "1.9".respond_to? :encode
59
+ source = source.force_encoding('binary')
60
+ end
61
+
53
62
  meta, content = source.split(/---\n(.+?)---/sm)[1,2]
54
63
 
55
64
  if meta
@@ -59,7 +68,10 @@ class Page < OpenStruct
59
68
  end
60
69
 
61
70
  attributes.merge(
71
+ 'body_source' => content,
62
72
  'body' => content && RDiscount.new(content).to_html,
73
+ 'status' => 'published',
74
+ 'tag_list' => attributes['tags'],
63
75
  'published_at' => attributes['published_at'] || File.mtime(filename)
64
76
  )
65
77
  end
@@ -0,0 +1,7 @@
1
+ class Tag < OpenStruct
2
+ h2o_expose :name, :url
3
+
4
+ def url
5
+ "/tags/#{CGI.escape(self.name)}"
6
+ end
7
+ end
@@ -0,0 +1,33 @@
1
+ require 'will_paginate/view_helpers/link_renderer'
2
+ require 'will_paginate/view_helpers/base'
3
+
4
+ module WillPaginate
5
+ module ViewHelpers
6
+ module H2oCompatible
7
+ include WillPaginate::ViewHelpers::Base
8
+
9
+ def will_paginate(collection, options = {})
10
+ options[:renderer] = H2oLinkRenderer
11
+ super(collection, options)
12
+ end
13
+
14
+ class H2oLinkRenderer < ::WillPaginate::ViewHelpers::LinkRenderer
15
+ def url(page)
16
+ request_uri = @options[:request_uri]
17
+ uri = URI.parse(request_uri)
18
+ params = Rack::Utils.parse_query(uri.query)
19
+
20
+ if page > 1
21
+ params['page'] = page
22
+ else
23
+ params.delete('page')
24
+ return uri.path if params.empty?
25
+ end
26
+ uri.query = Rack::Utils.build_query(params)
27
+ uri.to_s
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+ end
data/lib/upfile.rb CHANGED
@@ -16,10 +16,10 @@ module Upfile
16
16
  when "csv", "xml", "css" then "text/#{type}"
17
17
  else
18
18
  # On BSDs, `file` doesn't give a result code of 1 if the file doesn't exist.
19
- content_type = (Paperclip.run("file", "--mime-type :file", :file => self.path).split(':').last.strip rescue "application/x-#{type}")
20
- content_type = "application/x-#{type}" if content_type.match(/\(.*?\)/)
21
- content_type
19
+ content_type = `file --mime --brief #{self.path}`.split(';').first
22
20
  end
21
+ rescue
22
+ 'application/octet-stream'
23
23
  end
24
24
 
25
25
  # Returns the file's normal name.
data/siterest.gemspec CHANGED
@@ -1,89 +1,121 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{siterest}
8
- s.version = "0.1.0.pre6"
8
+ s.version = "0.1.0.pre8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Taylor luk"]
12
- s.date = %q{2010-08-19}
12
+ s.date = %q{2011-03-14}
13
13
  s.default_executable = %q{siterest}
14
14
  s.description = %q{Simple content service}
15
15
  s.email = %q{taylor.luk@idealian.net}
16
16
  s.executables = ["siterest"]
17
17
  s.files = [
18
18
  "Gemfile",
19
- "Gemfile.lock",
20
- "Rakefile",
21
- "VERSION",
22
- "bin/siterest",
23
- "config.ru",
24
- "lib/encoded_attachment/.gitignore",
25
- "lib/encoded_attachment/Gemfile",
26
- "lib/encoded_attachment/LICENSE",
27
- "lib/encoded_attachment/README.md",
28
- "lib/encoded_attachment/Rakefile",
29
- "lib/encoded_attachment/encoded_attachment.gemspec",
30
- "lib/encoded_attachment/lib/activerecord/base.rb",
31
- "lib/encoded_attachment/lib/activeresource/base.rb",
32
- "lib/encoded_attachment/lib/activeresource/connection.rb",
33
- "lib/encoded_attachment/lib/encoded_attachment.rb",
34
- "lib/encoded_attachment/lib/encoded_attachment/version.rb",
35
- "lib/encoded_attachment/test/active_record_test.rb",
36
- "lib/encoded_attachment/test/active_resource_test.rb",
37
- "lib/encoded_attachment/test/avatars/.gitignore",
38
- "lib/encoded_attachment/test/config/database.yml",
39
- "lib/encoded_attachment/test/config/schema.rb",
40
- "lib/encoded_attachment/test/fixtures/kitten.jpg",
41
- "lib/encoded_attachment/test/fixtures/tapir.jpg",
42
- "lib/encoded_attachment/test/test_helper.rb",
43
- "lib/siterest.rb",
44
- "lib/siterest/asset.rb",
45
- "lib/siterest/client.rb",
46
- "lib/siterest/command.rb",
47
- "lib/siterest/server.rb",
48
- "lib/siterest/site.rb",
49
- "lib/siterest/template.rb",
50
- "lib/siterest/template/filters/core_filters.rb",
51
- "lib/siterest/template/filters/datetime_filters.rb",
52
- "lib/siterest/template/filters/url_filters.rb",
53
- "lib/siterest/template/objects/article.rb",
54
- "lib/siterest/template/objects/page.rb",
55
- "lib/siterest/template/objects/site.rb",
56
- "lib/siterest/user.rb",
57
- "lib/upfile.rb",
58
- "readme.md",
59
- "site/data/articles/2008-04-24-my-first-blog-post.md",
60
- "site/data/pages/about-us.md",
61
- "site/data/pages/about-us/something.md",
62
- "site/data/pages/contact.md",
63
- "site/data/pages/home.md",
64
- "site/data/site.yaml",
65
- "siterest.gemspec"
19
+ "Gemfile.lock",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "bin/siterest",
23
+ "config.ru",
24
+ "data/articles/2008-04-24-my-first-blog-post.md",
25
+ "data/pages/about-us.md",
26
+ "data/pages/contact.md",
27
+ "data/pages/home.md",
28
+ "data/site.yaml",
29
+ "lib/encoded_attachment/.gitignore",
30
+ "lib/encoded_attachment/Gemfile",
31
+ "lib/encoded_attachment/LICENSE",
32
+ "lib/encoded_attachment/README.md",
33
+ "lib/encoded_attachment/Rakefile",
34
+ "lib/encoded_attachment/encoded_attachment.gemspec",
35
+ "lib/encoded_attachment/lib/activerecord/base.rb",
36
+ "lib/encoded_attachment/lib/activeresource/base.rb",
37
+ "lib/encoded_attachment/lib/activeresource/connection.rb",
38
+ "lib/encoded_attachment/lib/encoded_attachment.rb",
39
+ "lib/encoded_attachment/lib/encoded_attachment/version.rb",
40
+ "lib/encoded_attachment/test/active_record_test.rb",
41
+ "lib/encoded_attachment/test/active_resource_test.rb",
42
+ "lib/encoded_attachment/test/avatars/.gitignore",
43
+ "lib/encoded_attachment/test/config/database.yml",
44
+ "lib/encoded_attachment/test/config/schema.rb",
45
+ "lib/encoded_attachment/test/fixtures/kitten.jpg",
46
+ "lib/encoded_attachment/test/fixtures/tapir.jpg",
47
+ "lib/encoded_attachment/test/test_helper.rb",
48
+ "lib/siterest.rb",
49
+ "lib/siterest/asset.rb",
50
+ "lib/siterest/client.rb",
51
+ "lib/siterest/command.rb",
52
+ "lib/siterest/page.rb",
53
+ "lib/siterest/server.rb",
54
+ "lib/siterest/site.rb",
55
+ "lib/siterest/template.rb",
56
+ "lib/siterest/template/filters/core_filters.rb",
57
+ "lib/siterest/template/filters/datetime_filters.rb",
58
+ "lib/siterest/template/filters/url_filters.rb",
59
+ "lib/siterest/template/objects/article.rb",
60
+ "lib/siterest/template/objects/page.rb",
61
+ "lib/siterest/template/objects/site.rb",
62
+ "lib/siterest/template/objects/tag.rb",
63
+ "lib/siterest/template/paginate.rb",
64
+ "lib/siterest/user.rb",
65
+ "lib/upfile.rb",
66
+ "pkg/siterest-0.1.0.pre7.gem",
67
+ "readme.md",
68
+ "site/data/articles/2008-04-24-my-first-blog-post.md",
69
+ "site/data/pages/about-us.md",
70
+ "site/data/pages/contact.md",
71
+ "site/data/pages/home.md",
72
+ "site/data/site.yaml",
73
+ "siterest.gemspec",
74
+ "spec/siterest/page_spec.rb",
75
+ "spec/spec_helper.rb"
66
76
  ]
67
77
  s.homepage = %q{http://www.siterest.com}
68
- s.rdoc_options = ["--charset=UTF-8"]
69
78
  s.require_paths = ["lib"]
70
- s.rubygems_version = %q{1.3.7}
79
+ s.rubygems_version = %q{1.5.0}
71
80
  s.summary = %q{Siterest client}
81
+ s.test_files = [
82
+ "spec/siterest/page_spec.rb",
83
+ "spec/spec_helper.rb"
84
+ ]
72
85
 
73
86
  if s.respond_to? :specification_version then
74
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
75
87
  s.specification_version = 3
76
88
 
77
89
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
78
90
  s.add_runtime_dependency(%q<h2o>, [">= 0"])
79
- s.add_runtime_dependency(%q<activeresource>, ["~> 3.0.0.beta4"])
91
+ s.add_runtime_dependency(%q<activeresource>, ["~> 3.0.0"])
92
+ s.add_runtime_dependency(%q<launchy>, [">= 0"])
93
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
94
+ s.add_runtime_dependency(%q<mime-types>, [">= 0"])
95
+ s.add_runtime_dependency(%q<rest-client>, [">= 0"])
96
+ s.add_runtime_dependency(%q<rdiscount>, [">= 0"])
97
+ s.add_runtime_dependency(%q<rspec>, [">= 0"])
98
+ s.add_runtime_dependency(%q<will_paginate>, [">= 3.0.pre2"])
99
+ s.add_runtime_dependency(%q<h2o>, ["~> 0.3"])
100
+ s.add_runtime_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
101
+ s.add_runtime_dependency(%q<activeresource>, ["~> 3.0.0"])
80
102
  s.add_runtime_dependency(%q<launchy>, [">= 0"])
81
103
  s.add_runtime_dependency(%q<sinatra>, [">= 0"])
82
104
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
83
105
  s.add_runtime_dependency(%q<rdiscount>, [">= 0"])
84
106
  else
85
107
  s.add_dependency(%q<h2o>, [">= 0"])
86
- s.add_dependency(%q<activeresource>, ["~> 3.0.0.beta4"])
108
+ s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
109
+ s.add_dependency(%q<launchy>, [">= 0"])
110
+ s.add_dependency(%q<sinatra>, [">= 0"])
111
+ s.add_dependency(%q<mime-types>, [">= 0"])
112
+ s.add_dependency(%q<rest-client>, [">= 0"])
113
+ s.add_dependency(%q<rdiscount>, [">= 0"])
114
+ s.add_dependency(%q<rspec>, [">= 0"])
115
+ s.add_dependency(%q<will_paginate>, [">= 3.0.pre2"])
116
+ s.add_dependency(%q<h2o>, ["~> 0.3"])
117
+ s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
118
+ s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
87
119
  s.add_dependency(%q<launchy>, [">= 0"])
88
120
  s.add_dependency(%q<sinatra>, [">= 0"])
89
121
  s.add_dependency(%q<rest-client>, [">= 0"])
@@ -91,7 +123,17 @@ Gem::Specification.new do |s|
91
123
  end
92
124
  else
93
125
  s.add_dependency(%q<h2o>, [">= 0"])
94
- s.add_dependency(%q<activeresource>, ["~> 3.0.0.beta4"])
126
+ s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
127
+ s.add_dependency(%q<launchy>, [">= 0"])
128
+ s.add_dependency(%q<sinatra>, [">= 0"])
129
+ s.add_dependency(%q<mime-types>, [">= 0"])
130
+ s.add_dependency(%q<rest-client>, [">= 0"])
131
+ s.add_dependency(%q<rdiscount>, [">= 0"])
132
+ s.add_dependency(%q<rspec>, [">= 0"])
133
+ s.add_dependency(%q<will_paginate>, [">= 3.0.pre2"])
134
+ s.add_dependency(%q<h2o>, ["~> 0.3"])
135
+ s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
136
+ s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
95
137
  s.add_dependency(%q<launchy>, [">= 0"])
96
138
  s.add_dependency(%q<sinatra>, [">= 0"])
97
139
  s.add_dependency(%q<rest-client>, [">= 0"])
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Siterest::Page do
4
+ it "does something" do
5
+ client = Siterest::Client.new
6
+
7
+ client.push_pages("unione")
8
+ # @pages = Siterest::Page.all(:params => {:subdomain => "test"})
9
+ # existing = Siterest::Page.first(:params => {
10
+ # :subdomain => "test", :search => {:permalink_eq => "about"}
11
+ # })
12
+ # puts existing.title
13
+ # Dir.chdir('./site')
14
+ # pages = Page.all
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ $: << File.join(File.dirname(__FILE__), "../lib")
2
+ require 'siterest'
3
+ require 'siterest/page'
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: siterest
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: true
5
- segments:
6
- - 0
7
- - 1
8
- - 0
9
- - pre6
10
- version: 0.1.0.pre6
4
+ prerelease: 6
5
+ version: 0.1.0.pre8
11
6
  platform: ruby
12
7
  authors:
13
8
  - Taylor luk
@@ -15,90 +10,185 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-08-19 00:00:00 +10:00
13
+ date: 2011-05-03 00:00:00 +10:00
19
14
  default_executable: siterest
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
22
17
  name: h2o
23
- prerelease: false
24
18
  requirement: &id001 !ruby/object:Gem::Requirement
25
19
  none: false
26
20
  requirements:
27
21
  - - ">="
28
22
  - !ruby/object:Gem::Version
29
- segments:
30
- - 0
31
23
  version: "0"
32
24
  type: :runtime
25
+ prerelease: false
33
26
  version_requirements: *id001
34
27
  - !ruby/object:Gem::Dependency
35
28
  name: activeresource
36
- prerelease: false
37
29
  requirement: &id002 !ruby/object:Gem::Requirement
38
30
  none: false
39
31
  requirements:
40
32
  - - ~>
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 3
44
- - 0
45
- - 0
46
- - beta4
47
- version: 3.0.0.beta4
34
+ version: 3.0.0
48
35
  type: :runtime
36
+ prerelease: false
49
37
  version_requirements: *id002
50
38
  - !ruby/object:Gem::Dependency
51
39
  name: launchy
52
- prerelease: false
53
40
  requirement: &id003 !ruby/object:Gem::Requirement
54
41
  none: false
55
42
  requirements:
56
43
  - - ">="
57
44
  - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
45
  version: "0"
61
46
  type: :runtime
47
+ prerelease: false
62
48
  version_requirements: *id003
63
49
  - !ruby/object:Gem::Dependency
64
50
  name: sinatra
65
- prerelease: false
66
51
  requirement: &id004 !ruby/object:Gem::Requirement
67
52
  none: false
68
53
  requirements:
69
54
  - - ">="
70
55
  - !ruby/object:Gem::Version
71
- segments:
72
- - 0
73
56
  version: "0"
74
57
  type: :runtime
58
+ prerelease: false
75
59
  version_requirements: *id004
76
60
  - !ruby/object:Gem::Dependency
77
- name: rest-client
78
- prerelease: false
61
+ name: mime-types
79
62
  requirement: &id005 !ruby/object:Gem::Requirement
80
63
  none: false
81
64
  requirements:
82
65
  - - ">="
83
66
  - !ruby/object:Gem::Version
84
- segments:
85
- - 0
86
67
  version: "0"
87
68
  type: :runtime
69
+ prerelease: false
88
70
  version_requirements: *id005
89
71
  - !ruby/object:Gem::Dependency
90
- name: rdiscount
91
- prerelease: false
72
+ name: rest-client
92
73
  requirement: &id006 !ruby/object:Gem::Requirement
93
74
  none: false
94
75
  requirements:
95
76
  - - ">="
96
77
  - !ruby/object:Gem::Version
97
- segments:
98
- - 0
99
78
  version: "0"
100
79
  type: :runtime
80
+ prerelease: false
101
81
  version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: rdiscount
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: *id007
93
+ - !ruby/object:Gem::Dependency
94
+ name: rspec
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ type: :runtime
102
+ prerelease: false
103
+ version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: will_paginate
106
+ requirement: &id009 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 3.0.pre2
112
+ type: :runtime
113
+ prerelease: false
114
+ version_requirements: *id009
115
+ - !ruby/object:Gem::Dependency
116
+ name: h2o
117
+ requirement: &id010 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ~>
121
+ - !ruby/object:Gem::Version
122
+ version: "0.3"
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: *id010
126
+ - !ruby/object:Gem::Dependency
127
+ name: will_paginate
128
+ requirement: &id011 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 3.0.pre2
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: *id011
137
+ - !ruby/object:Gem::Dependency
138
+ name: activeresource
139
+ requirement: &id012 !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: 3.0.0
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: *id012
148
+ - !ruby/object:Gem::Dependency
149
+ name: launchy
150
+ requirement: &id013 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: "0"
156
+ type: :runtime
157
+ prerelease: false
158
+ version_requirements: *id013
159
+ - !ruby/object:Gem::Dependency
160
+ name: sinatra
161
+ requirement: &id014 !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: "0"
167
+ type: :runtime
168
+ prerelease: false
169
+ version_requirements: *id014
170
+ - !ruby/object:Gem::Dependency
171
+ name: rest-client
172
+ requirement: &id015 !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: "0"
178
+ type: :runtime
179
+ prerelease: false
180
+ version_requirements: *id015
181
+ - !ruby/object:Gem::Dependency
182
+ name: rdiscount
183
+ requirement: &id016 !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: "0"
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: *id016
102
192
  description: Simple content service
103
193
  email: taylor.luk@idealian.net
104
194
  executables:
@@ -114,6 +204,11 @@ files:
114
204
  - VERSION
115
205
  - bin/siterest
116
206
  - config.ru
207
+ - data/articles/2008-04-24-my-first-blog-post.md
208
+ - data/pages/about-us.md
209
+ - data/pages/contact.md
210
+ - data/pages/home.md
211
+ - data/site.yaml
117
212
  - lib/encoded_attachment/.gitignore
118
213
  - lib/encoded_attachment/Gemfile
119
214
  - lib/encoded_attachment/LICENSE
@@ -137,6 +232,7 @@ files:
137
232
  - lib/siterest/asset.rb
138
233
  - lib/siterest/client.rb
139
234
  - lib/siterest/command.rb
235
+ - lib/siterest/page.rb
140
236
  - lib/siterest/server.rb
141
237
  - lib/siterest/site.rb
142
238
  - lib/siterest/template.rb
@@ -146,23 +242,26 @@ files:
146
242
  - lib/siterest/template/objects/article.rb
147
243
  - lib/siterest/template/objects/page.rb
148
244
  - lib/siterest/template/objects/site.rb
245
+ - lib/siterest/template/objects/tag.rb
246
+ - lib/siterest/template/paginate.rb
149
247
  - lib/siterest/user.rb
150
248
  - lib/upfile.rb
151
249
  - readme.md
152
250
  - site/data/articles/2008-04-24-my-first-blog-post.md
153
251
  - site/data/pages/about-us.md
154
- - site/data/pages/about-us/something.md
155
252
  - site/data/pages/contact.md
156
253
  - site/data/pages/home.md
157
254
  - site/data/site.yaml
158
255
  - siterest.gemspec
256
+ - spec/siterest/page_spec.rb
257
+ - spec/spec_helper.rb
159
258
  has_rdoc: true
160
259
  homepage: http://www.siterest.com
161
260
  licenses: []
162
261
 
163
262
  post_install_message:
164
- rdoc_options:
165
- - --charset=UTF-8
263
+ rdoc_options: []
264
+
166
265
  require_paths:
167
266
  - lib
168
267
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -170,25 +269,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
269
  requirements:
171
270
  - - ">="
172
271
  - !ruby/object:Gem::Version
173
- segments:
174
- - 0
175
272
  version: "0"
176
273
  required_rubygems_version: !ruby/object:Gem::Requirement
177
274
  none: false
178
275
  requirements:
179
276
  - - ">"
180
277
  - !ruby/object:Gem::Version
181
- segments:
182
- - 1
183
- - 3
184
- - 1
185
278
  version: 1.3.1
186
279
  requirements: []
187
280
 
188
281
  rubyforge_project:
189
- rubygems_version: 1.3.7
282
+ rubygems_version: 1.5.0
190
283
  signing_key:
191
284
  specification_version: 3
192
285
  summary: Siterest client
193
- test_files: []
194
-
286
+ test_files:
287
+ - spec/siterest/page_spec.rb
288
+ - spec/spec_helper.rb
File without changes