adva-markup 0.0.2 → 0.0.3

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.
@@ -0,0 +1,118 @@
1
+ require 'pathname'
2
+
3
+ # Bundler gemfile support for local/remote workspaces/repositories for work in
4
+ # development teams.
5
+ #
6
+ # Usage:
7
+ #
8
+ # # define paths to be searched for repositories:
9
+ # workspace '~/.projects ~/Development/{projects,work}'
10
+ #
11
+ # # define developer preferences for using local or remote repositories (uses ENV['user']):
12
+ # developer :sven, :prefer => :local
13
+ #
14
+ # # define repositories to be used for particular gems:
15
+ # adva_cms = repository('adva-cms2', :git => 'git@github.com:svenfuchs/adva-cms2.git', :ref => 'c2af0de')
16
+ # adva_shop = repository('adva-shop', :source => :local)
17
+ #
18
+ # # now use repositories to define gems:
19
+ # adva_cms.gem 'adva-core'
20
+ # adva_shop.gem 'adva-catalog'
21
+ #
22
+ # # The gem definition will now be proxied to Bundler with arguments according
23
+ # # to the setup defined earlier. E.g. as:
24
+ #
25
+ # gem 'adva-core', :path => 'Development/projects/adva-cms2/adva-core' # for developer 'sven'
26
+ # gem 'adva-core', :git => 'git@github.com:svenfuchs/adva-cms2.git', :ref => 'c2af0de' # for other developers
27
+ # gem 'adva-catalog', :path => 'Development/projects/adva-shop/adva-catalog' # for all developers
28
+ #
29
+ # One can also set an environment variable FORCE_REMOTE which will force remote
30
+ # repositories to be used *except* when a repository was defined with :source => :local
31
+ # which always forces the local repository to be used.
32
+ #
33
+ class Repository
34
+ class << self
35
+ def paths
36
+ @paths ||= []
37
+ end
38
+
39
+ def path(*paths)
40
+ paths.join(' ').split(' ').each do |path|
41
+ self.paths.concat(Pathname.glob(File.expand_path(path)))
42
+ end
43
+ end
44
+
45
+ def developer(name, preferences)
46
+ developers[name] = preferences
47
+ workspaces(preferences[:workspace])
48
+ end
49
+
50
+ def current_developer
51
+ developers[ENV['USER'].to_sym] || {}
52
+ end
53
+
54
+ def developers(developers = nil)
55
+ @developers ||= {}
56
+ end
57
+ end
58
+
59
+ class Gem < Array
60
+ def initialize(name, repository)
61
+ if repository.local?
62
+ sub_path = repository.path.join(name)
63
+ super([name, { :path => sub_path.exist? ? sub_path.to_s : repository.path.to_s }])
64
+ else
65
+ super([name, repository.options.dup])
66
+ end
67
+ end
68
+ end
69
+
70
+ attr_reader :bundler, :name, :options, :source
71
+
72
+ def initialize(bundler, name, options)
73
+ @bundler = bundler
74
+ @name = name
75
+ @source = options.delete(:source)
76
+ @options = options
77
+ end
78
+
79
+ def gem(name)
80
+ bundler.gem(*Gem.new(name, self))
81
+ end
82
+
83
+ def local?
84
+ source == :local # && path
85
+ end
86
+
87
+ def source
88
+ @source ||= forced_source || preferred_source || :remote
89
+ end
90
+
91
+ def forced_source
92
+ :remote if ENV['FORCE_REMOTE']
93
+ end
94
+
95
+ def preferred_source
96
+ self.class.current_developer[:prefer] || self.class.current_developer[name.to_sym]
97
+ end
98
+
99
+ def path
100
+ @path ||= begin
101
+ path = self.class.paths.detect { |path| path.join(name).exist? }
102
+ path ? path.join(name) : Pathname.new('.')
103
+ end
104
+ end
105
+ end
106
+
107
+ def workspace(*paths)
108
+ Repository.path(*paths)
109
+ end
110
+ alias :workspaces :workspace
111
+
112
+ def developer(name, preferences)
113
+ Repository.developer(name, preferences)
114
+ end
115
+
116
+ def repository(*args)
117
+ Repository.new(self, *args)
118
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adva-markup
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-08 00:00:00 +01:00
18
+ date: 2010-11-19 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -69,18 +69,7 @@ extensions: []
69
69
  extra_rdoc_files: []
70
70
 
71
71
  files:
72
- - app/views/admin/blogs/_form_slice.html.rb
73
- - app/views/admin/posts/_form_slice.html.rb
74
- - app/models/content_slice.rb
75
- - app/models/section_slice.rb
76
- - config/redirects.rb
77
- - config/routes.rb
78
- - config/locales/en.yml
79
- - lib/adva_markup/version.rb
80
- - lib/adva/markup.rb
81
- - lib/adva/markup/action_controller.rb
82
- - lib/adva/markup/active_record.rb
83
- - lib/adva-markup.rb
72
+ - lib/bundler/repository.rb
84
73
  has_rdoc: true
85
74
  homepage: http://github.com/svenfuchs/adva-cms2
86
75
  licenses: []
@@ -1,5 +0,0 @@
1
- require_dependency 'content'
2
-
3
- Content.class_eval do
4
- filters :body
5
- end
@@ -1,6 +0,0 @@
1
- require_dependency 'section'
2
-
3
- Section.class_eval do
4
- has_option :default_filter
5
- end
6
-
@@ -1,14 +0,0 @@
1
- require_dependency 'admin/blogs/_form.html'
2
-
3
- Admin::Blogs::Form.class_eval do
4
- include do
5
- def fields
6
- super
7
- fieldset do
8
- column do
9
- form.input :default_filter, :as => :select, :collection => Adva::Markup.options
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,10 +0,0 @@
1
- require_dependency 'admin/posts/_form.html.rb'
2
-
3
- Admin::Posts::Form.include do
4
- def sidebar
5
- super
6
- tab :options do
7
- form.input :filter, :as => :select, :collection => Adva::Markup.options
8
- end
9
- end
10
- end
@@ -1,2 +0,0 @@
1
- en:
2
- markup: ""
data/config/redirects.rb DELETED
@@ -1,3 +0,0 @@
1
- # Adva::Registry.set :redirect, {
2
- # 'controller#action' => lambda { |controller| controller.show_url }
3
- # }
data/config/routes.rb DELETED
@@ -1,3 +0,0 @@
1
- # Rails.application.routes.draw do
2
- # resource :markup
3
- # end
data/lib/adva-markup.rb DELETED
@@ -1 +0,0 @@
1
- require 'adva/markup'
data/lib/adva/markup.rb DELETED
@@ -1,48 +0,0 @@
1
- require 'adva'
2
- require 'RedCloth'
3
- require 'rdiscount'
4
-
5
- ERB::Util.send(:undef_method, :t) # wtf, redcloth!
6
-
7
- module Adva
8
- class Markup < ::Rails::Engine
9
- include Adva::Engine
10
-
11
- autoload :ActionController, 'adva/markup/action_controller'
12
- autoload :ActiveRecord, 'adva/markup/active_record'
13
-
14
- mattr_accessor :filters
15
- self.filters = {
16
- :markdown => 'RDiscount',
17
- :textile => 'RedCloth'
18
- }
19
-
20
- class << self
21
- def apply(name, markup)
22
- if filter = self.filter(name)
23
- filter.new(markup).to_html
24
- end
25
- end
26
-
27
- def filter(name)
28
- filters[name.to_sym].constantize if name.present? && filters[name.to_sym]
29
- end
30
-
31
- def keys
32
- @keys ||= filters.keys.map(&:to_s).sort
33
- end
34
-
35
- def names
36
- @names ||= keys.map { |key| key.titleize }
37
- end
38
-
39
- def options
40
- @options ||= Hash[*names.zip(keys).flatten]
41
- end
42
- end
43
- end
44
- end
45
-
46
- ActionController::Base.extend(Adva::Markup::ActionController::ActMacro)
47
- ActiveRecord::Base.extend(Adva::Markup::ActiveRecord::ActMacro)
48
-
@@ -1,38 +0,0 @@
1
- module Adva
2
- class Markup
3
- module ActionController
4
- module ActMacro
5
- def filtered_attributes(*models)
6
- options = models.extract_options!
7
- options[:models] = models.map(&:to_s).map(&:camelize)
8
- options[:only] = Array(options[:only]).map(&:to_sym)
9
- options[:except] = Array(options[:except]).map(&:to_sym)
10
-
11
- class_inheritable_accessor :filtered_attribute_options
12
- self.filtered_attribute_options = options
13
-
14
- include InstanceMethods
15
- end
16
- end
17
-
18
- module InstanceMethods
19
- def render(*args)
20
- options = filtered_attribute_options
21
- excluded = options[:except].include?(params[:action].to_sym)
22
- included = options[:only].empty? || options[:only].include?(params[:action].to_sym)
23
-
24
- !excluded && included ? with_filtered_attributes { super } : super
25
- end
26
-
27
- def with_filtered_attributes
28
- models = filtered_attribute_options[:models].map(&:constantize)
29
- models.each { |model| model.read_filtered_attributes = true }
30
- yield.tap do
31
- models.each { |model| model.read_filtered_attributes = false }
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
@@ -1,41 +0,0 @@
1
- # TODO make sure this can be called multiple times
2
- #
3
- module Adva
4
- class Markup
5
- module ActiveRecord
6
- module ActMacro
7
- def filters(*attributes)
8
- class_inheritable_accessor :filtered_attributes
9
- class_inheritable_accessor :read_filtered_attributes
10
-
11
- self.filtered_attributes = attributes
12
- self.read_filtered_attributes = false
13
-
14
- before_save :filter_attributes!
15
- include InstanceMethods
16
- include attribute_readers_module
17
- end
18
-
19
- def attribute_readers_module
20
- Module.new.tap do |readers|
21
- filtered_attributes.each do |name|
22
- readers.module_eval <<-rb
23
- def #{name}; read_filtered_attributes ? send(:#{name}_html) : super; end
24
- rb
25
- end
26
- end
27
- end
28
- end
29
-
30
- module InstanceMethods
31
- def filter_attributes!
32
- filtered_attributes.each do |name|
33
- value = self.send(name)
34
- value = Adva::Markup.apply(filter, value) if respond_to?(:filter) && filter
35
- write_attribute(:"#{name}_html", value)
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,3 +0,0 @@
1
- module AdvaMarkup
2
- VERSION = "0.0.2"
3
- end