aq1018-dm-is-markup 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ version 0.1
2
+
3
+ made it into a gem using hoe
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Aaron Qian
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,9 @@
1
+ History.txt
2
+ LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ lib/dm-is-markup.rb
8
+ lib/dm-is-markup/is/markup.rb
9
+ lib/dm-is-markup/is/version.rb
@@ -0,0 +1,3 @@
1
+ = dm-is-markup
2
+
3
+ Parse a field with a markup engine and save it to a new field created by the plugin.
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'hoe'
3
+ require 'spec/rake/spectask'
4
+ require 'pathname'
5
+
6
+ ROOT = Pathname(__FILE__).dirname.expand_path
7
+ require ROOT + 'lib/dm-is-markup/is/version'
8
+
9
+ AUTHOR = "Aaron Qian, Brian Smith"
10
+ EMAIL = "aaron [a] ekohe [d] com; wbsmith83 [a] gmail [d] com"
11
+ GEM_NAME = "dm-is-markup"
12
+ GEM_VERSION = DataMapper::Is::Markup::VERSION
13
+ GEM_DEPENDENCIES = [["dm-core", "~>0.9"]]
14
+ GEM_CLEAN = ["log", "pkg"]
15
+ GEM_EXTRAS = { :has_rdoc => false }
16
+
17
+ PROJECT_NAME = "dm-is-slug"
18
+ PROJECT_URL = "http://github.com/aq1018/dm-is-markup"
19
+ PROJECT_DESCRIPTION = PROJECT_SUMMARY = "Parse a field with a markup engine and save it to a new field created by the plugin."
20
+
21
+ require 'tasks/hoe'
22
+
23
+ task :default => [ :spec ]
24
+
25
+ WIN32 = (RUBY_PLATFORM =~ /win32|mingw|cygwin/) rescue nil
26
+ SUDO = WIN32 ? '' : ('sudo' unless ENV['SUDOLESS'])
27
+
28
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
29
+ task :install => [ :package ] do
30
+ sh "#{SUDO} gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources", :verbose => false
31
+ end
32
+
33
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION} (default ruby)"
34
+ task :uninstall => [ :clobber ] do
35
+ sh "#{SUDO} gem uninstall #{GEM_NAME} -v#{GEM_VERSION} -I -x", :verbose => false
36
+ end
37
+
38
+ desc 'Run specifications'
39
+ Spec::Rake::SpecTask.new(:spec) do |t|
40
+ t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
41
+ t.spec_files = Pathname.glob(Pathname.new(__FILE__).dirname + 'spec/**/*_spec.rb')
42
+
43
+ begin
44
+ t.rcov = ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true
45
+ t.rcov_opts << '--exclude' << 'spec'
46
+ t.rcov_opts << '--text-summary'
47
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
48
+ rescue Exception
49
+ puts 'rcov is not installed. Please install before continuing'
50
+ exit
51
+ end
52
+ end
data/TODO ADDED
@@ -0,0 +1 @@
1
+ Add specs
@@ -0,0 +1,19 @@
1
+ # Needed to import datamapper and other gems
2
+ require 'rubygems'
3
+ require 'pathname'
4
+
5
+ # Add all external dependencies for the plugin here
6
+ require 'dm-core'
7
+
8
+ # Require plugin-files
9
+ require Pathname(__FILE__).dirname.expand_path / 'dm-is-markup' / 'is' / 'markup.rb'
10
+
11
+
12
+ # Include the plugin in Resource
13
+ module DataMapper
14
+ module Resource
15
+ module ClassMethods
16
+ include DataMapper::Is::Markup
17
+ end # module ClassMethods
18
+ end # module Resource
19
+ end # module DataMapper
@@ -0,0 +1,96 @@
1
+ module DataMapper
2
+ module Is
3
+ module Markup
4
+
5
+ def self.included(base)
6
+
7
+ end
8
+
9
+ def is_markup(options)
10
+ extend DataMapper::Is::Markup::ClassMethods
11
+ include DataMapper::Is::Markup::InstanceMethods
12
+
13
+ #merge in default options
14
+ options = {
15
+ :filter_property => :filter_type,
16
+ :markup_property => "#{options[:source]}_html".to_sym
17
+ }.merge(options)
18
+
19
+ # must at least specify a source property to generate the filtered Text
20
+ raise Exception.new("You must specify a :source") unless options.include?(:source)
21
+
22
+ # save as class variable for later...
23
+ @markup_options = options
24
+
25
+ # make sure the source property exsists
26
+ source_property = properties.detect{|p| p.name == options[:source].to_sym && p.type == DM::Text}
27
+
28
+ existing_markup_property = properties.detect{|p| p.name == options[:markup_property].to_sym}
29
+ existing_filter_property = properties.detect{|p| p.name == options[:filter_property].to_sym}
30
+
31
+ unless existing_markup_property || existing_filter_property
32
+ property markup_property, DM::Text
33
+ property filter_property, DM::Enum[:textile, :markdown, :wikitext], :nullable => false, :default => :textile
34
+ else
35
+ raise Exception.new("#{markup_property} or #{filter_property} has been defined as property already!")
36
+ end
37
+
38
+ before :save, :apply_filter
39
+
40
+ end
41
+
42
+ module ClassMethods
43
+ attr_reader :markup_options
44
+
45
+ def markup_property
46
+ markup_options[:markup_property]
47
+ end
48
+
49
+ def filter_property
50
+ markup_options[:filter_property]
51
+ end
52
+
53
+ def source_property
54
+ markup_options[:source]
55
+ end
56
+
57
+ end # ClassMethods
58
+
59
+ module InstanceMethods
60
+
61
+ def markup_property
62
+ self.send(self.class.markup_property)
63
+ end
64
+
65
+ def filter_property
66
+ self.send(self.class.markup_property)
67
+ end
68
+
69
+ def source_property
70
+ self.send(self.class.source_property)
71
+ end
72
+
73
+ def apply_filter
74
+ if new_record? || attribute_dirty?(self.class.source_property) || attribute_dirty?(self.class.filter_property)
75
+ attribute_set(self.class.markup_property, generate_markup(self.send(:filter_type)))
76
+ end
77
+ end
78
+
79
+ def generate_markup(filter)
80
+ case filter
81
+ when :textile:
82
+ RedCloth.new(source_property).to_html
83
+ when :markdown:
84
+ BlueCloth.new(source_property).to_html
85
+ when :wikitext:
86
+ Wikitext::Parser.new.parse(source_property)
87
+ else
88
+ raise Exception.new("Unknown Filter!! use textile, markdown or wikitext as filters only")
89
+ end
90
+ end
91
+
92
+ end # InstanceMethods
93
+
94
+ end # Markup
95
+ end # Is
96
+ end # DataMapper
@@ -0,0 +1,7 @@
1
+ module DataMapper
2
+ module Is
3
+ module Markup
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aq1018-dm-is-markup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Qian, Brian Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-26 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: dm-core
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: "0.9"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.2
34
+ version:
35
+ description: Parse a field with a markup engine and save it to a new field created by the plugin.
36
+ email:
37
+ - aaron [a] ekohe [d] com; wbsmith83 [a] gmail [d] com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - History.txt
44
+ - Manifest.txt
45
+ - README.txt
46
+ files:
47
+ - History.txt
48
+ - LICENSE
49
+ - Manifest.txt
50
+ - README.txt
51
+ - Rakefile
52
+ - TODO
53
+ - lib/dm-is-markup.rb
54
+ - lib/dm-is-markup/is/markup.rb
55
+ - lib/dm-is-markup/is/version.rb
56
+ has_rdoc: false
57
+ homepage: http://github.com/aq1018/dm-is-markup
58
+ post_install_message:
59
+ rdoc_options:
60
+ - --main
61
+ - README.txt
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ version:
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ requirements: []
77
+
78
+ rubyforge_project: dm-is-slug
79
+ rubygems_version: 1.2.0
80
+ signing_key:
81
+ specification_version: 2
82
+ summary: Parse a field with a markup engine and save it to a new field created by the plugin.
83
+ test_files: []
84
+