osx_dict 1.0.0

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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in osx_dict.gemspec
4
+ gemspec
@@ -0,0 +1,33 @@
1
+ osx_dict
2
+ ====
3
+
4
+ Make your own dictionary for MacOSX!
5
+
6
+ Install
7
+ ----
8
+
9
+ gem install osx_dict
10
+
11
+ Example
12
+ ----
13
+
14
+ require 'osx_dict'
15
+
16
+ dict = OSXDict::Dictionary.new(:id => 'com.example.Foo', :name => "Foo Dictionary", :filename => 'Foo Dict')
17
+
18
+ dict.add_entry(:id => 'foo', :title => 'Foo', :indexes => ['foo', 'Foo'], :body => <<BODY)
19
+ <h1>foo</h1>
20
+ <p>foo foo foo</p>
21
+ BODY
22
+
23
+ dict.add_entry(:id => 'bar', :title => 'Bar', :indexes => ['bar', 'Bar'], :body => <<BODY)
24
+ <h1>bar</h1>
25
+ <p>bar bar</p>
26
+ BODY
27
+
28
+ dict.make('./')
29
+
30
+ Copyright
31
+ ----
32
+
33
+ Copyright (c) 2012 jugyo, released under the MIT license
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,15 @@
1
+ require 'osx_dict'
2
+
3
+ dict = OSXDict::Dictionary.new(:id => 'com.example.Foo', :name => "Foo Dictionary", :filename => 'Foo Dict')
4
+
5
+ dict.add_entry(:id => 'foo', :title => 'Foo', :indexes => ['foo', 'Foo'], :body => <<BODY)
6
+ <h1>foo</h1>
7
+ <p>foo foo foo</p>
8
+ BODY
9
+
10
+ dict.add_entry(:id => 'bar', :title => 'Bar', :indexes => ['bar', 'Bar'], :body => <<BODY)
11
+ <h1>bar</h1>
12
+ <p>bar bar</p>
13
+ BODY
14
+
15
+ dict.make
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ require "osx_dict/version"
3
+ require "fileutils"
4
+ require "tmpdir"
5
+ require "erb"
6
+
7
+ module OSXDict
8
+ class Dictionary
9
+ attr_accessor :id, :filename, :name
10
+
11
+ def initialize(attrs)
12
+ attrs.each do |key, value|
13
+ __send__(:"#{key}=", value)
14
+ end
15
+ end
16
+
17
+ def add_entry(options)
18
+ entries << OSXDict::Entry.new(options)
19
+ end
20
+
21
+ def entries
22
+ @entries ||= []
23
+ end
24
+
25
+ def make(dest = './')
26
+ Dir.mktmpdir do |dir|
27
+ xml_filename = "#{dir}/#{name}Dictionary.xml"
28
+ plist_filename = "#{dir}/#{name}Info.plist"
29
+ css_filename = "#{template_dir}/Dictionary.css"
30
+
31
+ File.open(xml_filename, 'w') do |file|
32
+ file << to_xml
33
+ end
34
+
35
+ File.open(plist_filename, 'w') do |file|
36
+ file << to_plist
37
+ end
38
+
39
+ Dir.chdir(dir) do
40
+ run("/Developer/Extras/Dictionary Development Kit/bin/build_dict.sh",
41
+ "-c=0", filename, xml_filename, css_filename, plist_filename)
42
+ end
43
+
44
+ FileUtils.cp_r("#{dir}/objects/#{filename}.dictionary", dest)
45
+ end
46
+ end
47
+
48
+ def to_xml
49
+ erb = ERB.new(File.read("#{template_dir}/Dictionary.xml.erb"))
50
+ erb.result(binding)
51
+ end
52
+
53
+ def to_plist
54
+ erb = ERB.new(File.read("#{template_dir}/Info.plist.erb"))
55
+ erb.result(binding)
56
+ end
57
+
58
+ def run(*cmd)
59
+ abort "command failed" unless system(*cmd)
60
+ end
61
+
62
+ def template_dir
63
+ File.expand_path('../osx_dict', __FILE__)
64
+ end
65
+ end
66
+
67
+ class Entry
68
+ attr_accessor :id, :title, :body
69
+ attr_writer :indexes
70
+
71
+ def initialize(attrs)
72
+ attrs.each do |key, value|
73
+ __send__(:"#{key}=", value)
74
+ end
75
+ end
76
+
77
+ def indexes
78
+ @indexes ||= []
79
+ end
80
+ end
81
+ end
File without changes
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
3
+ <% entries.each do |entry| %>
4
+ <d:entry id="<%= entry.id %>" d:title="<%= entry.title %>">
5
+ <% entry.indexes.each do |index| %>
6
+ <d:index d:value="<%= index %>"/>
7
+ <% end %>
8
+ <%= entry.body %>
9
+ </d:entry>
10
+ <% end %>
11
+ </d:dictionary>
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string><%= id %></string>
9
+ <key>CFBundleName</key>
10
+ <string><%= name %></string>
11
+ <key>CFBundleShortVersionString</key>
12
+ <string>1.0</string>
13
+ <key>DCSDictionaryCopyright</key>
14
+ <string>Copyright © 2007 Apple Inc.</string>
15
+ <key>DCSDictionaryManufacturerName</key>
16
+ <string>Apple Inc.</string>
17
+ <key>DCSDictionaryFrontMatterReferenceID</key>
18
+ <string>front_back_matter</string>
19
+ <key>DCSDictionaryPrefsHTML</key>
20
+ <string><%= name %>Dictionary_prefs.html</string>
21
+ <key>DCSDictionaryXSL</key>
22
+ <string><%= name %>Dictionary.xsl</string>
23
+ <key>DCSDictionaryDefaultPrefs</key>
24
+ <dict>
25
+ <key>pronunciation</key>
26
+ <string>0</string>
27
+ <key>display-column</key>
28
+ <string>1</string>
29
+ <key>display-picture</key>
30
+ <string>1</string>
31
+ <key>version</key>
32
+ <string>1</string>
33
+ </dict>
34
+ </dict>
35
+ </plist>
@@ -0,0 +1,3 @@
1
+ module OSXDict
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "osx_dict/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "osx_dict"
7
+ s.version = OSXDict::VERSION
8
+ s.authors = ["jugyo"]
9
+ s.email = ["jugyo.org@gmail.com"]
10
+ s.homepage = "https://github.com/jugyo/osx_dict"
11
+ s.summary = %q{Make your own dictionary for MacOSX!}
12
+ s.description = %q{Dictionary maker for MacOSX Dictionary.app}
13
+
14
+ s.rubyforge_project = "osx_dict"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: osx_dict
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - jugyo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-31 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Dictionary maker for MacOSX Dictionary.app
15
+ email:
16
+ - jugyo.org@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - README.md
24
+ - Rakefile
25
+ - examples/simple.rb
26
+ - lib/osx_dict.rb
27
+ - lib/osx_dict/Dictionary.css
28
+ - lib/osx_dict/Dictionary.xml.erb
29
+ - lib/osx_dict/Info.plist.erb
30
+ - lib/osx_dict/version.rb
31
+ - osx_dict.gemspec
32
+ homepage: https://github.com/jugyo/osx_dict
33
+ licenses: []
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project: osx_dict
52
+ rubygems_version: 1.8.10
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: Make your own dictionary for MacOSX!
56
+ test_files: []