conyard 0.1.5 → 0.1.6
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/bin/conyard-nscoding +37 -0
- data/bin/conyard-vector +2 -2
- data/lib/NSCoding/NSCoding.m.erb +82 -0
- data/lib/String.rb +5 -0
- metadata +11 -12
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems' if RUBY_VERSION < '1.9'
|
4
|
+
require 'thor'
|
5
|
+
require 'erb'
|
6
|
+
require File.join(File.dirname(__FILE__),'../lib/String')
|
7
|
+
|
8
|
+
$OLDDIR = Dir.pwd
|
9
|
+
Dir.chdir File.expand_path(File.join(File.dirname(__FILE__),'..'))
|
10
|
+
|
11
|
+
class NSCoding < Thor
|
12
|
+
|
13
|
+
desc 'generate OUTFILE ivar:type,ivar:type,...', "Makes a new NSCoding stubfile"
|
14
|
+
def generate(outfile, ivars)
|
15
|
+
@outfile = File.expand_path(outfile) or raise "Outfile cannot be nil"
|
16
|
+
@ivars = Hash.new
|
17
|
+
ivars.split(/,\s*/).each do |ivar|
|
18
|
+
type, ivar = ivar.split ':'
|
19
|
+
@ivars[type.intern] = ivar
|
20
|
+
end
|
21
|
+
raise 'No ivars!' if @ivars.empty?
|
22
|
+
|
23
|
+
puts "Generating NSCoding stubs:"
|
24
|
+
puts " outfile: #{@outfile}"
|
25
|
+
puts " ivars:"
|
26
|
+
@ivars.each do |ivar, type|
|
27
|
+
puts " #{ivar}: #{type}"
|
28
|
+
end
|
29
|
+
|
30
|
+
of=File.new(@outfile, "w")
|
31
|
+
of.write(ERB.new(File.read('lib/NSCoding/NSCoding.m.erb')).result(binding))
|
32
|
+
of.close
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
NSCoding.start
|
data/bin/conyard-vector
CHANGED
@@ -7,7 +7,7 @@ require 'erb'
|
|
7
7
|
$OLDDIR = Dir.pwd
|
8
8
|
Dir.chdir File.expand_path(File.join(File.dirname(__FILE__),'..'))
|
9
9
|
|
10
|
-
class
|
10
|
+
class Vector < Thor
|
11
11
|
|
12
12
|
desc "generate NAME TYPE OUTFILE LOCALFILES GLOBALFILES", "Makes a new vector"
|
13
13
|
def generate(name, datatype, outfile, local_include_files, global_include_files)
|
@@ -37,4 +37,4 @@ class VectorDispatcher < Thor
|
|
37
37
|
|
38
38
|
end
|
39
39
|
|
40
|
-
|
40
|
+
Vector.start
|
@@ -0,0 +1,82 @@
|
|
1
|
+
//! Created by Chris Miller on 17 October 2011.
|
2
|
+
//! Copyright 2011 Chris Miller. All rights reserved.
|
3
|
+
|
4
|
+
//! This file is generated; you are supposed to take the output and paste it
|
5
|
+
//! into your own source code files. This is a boilerplate code generator, not
|
6
|
+
//! a standalone object.
|
7
|
+
|
8
|
+
/*-----------------------------------------------------------------------------\
|
9
|
+
| PREFIX HEADER |
|
10
|
+
| These definitions belong in your project's prefix header. I use them to ens- |
|
11
|
+
| re consistency across model changes, and are used by all the code I generate |
|
12
|
+
| You may safely change the values in the two error messages, but the serial |
|
13
|
+
| version key should not be changed. |
|
14
|
+
\-----------------------------------------------------------------------------*/
|
15
|
+
|
16
|
+
#define kSerialVersionKey @"SerialVersionId"
|
17
|
+
#define kUnkeyedCodingError @"Unkeyed Coder Detected!"
|
18
|
+
#define kUnknownSerialVersionId @"Unknown Serial Version ID Detected!"
|
19
|
+
|
20
|
+
/*-----------------------------------------------------------------------------\
|
21
|
+
| IMPLEMENTATION FILE - AFTER IMPORTS |
|
22
|
+
| This define is local to the implementation file, and you should increment it |
|
23
|
+
| whenever your schema changes so you can write a migration deserialization in |
|
24
|
+
| the case block in initWithCoder: |
|
25
|
+
\-----------------------------------------------------------------------------*/
|
26
|
+
|
27
|
+
#define kSerialVersionId 0
|
28
|
+
|
29
|
+
/*-----------------------------------------------------------------------------\
|
30
|
+
| IMPLEMENTATION FILE - BEFORE SYNTHESIZE |
|
31
|
+
| I use this to ensure that the tag names are consistent and without any capa- |
|
32
|
+
| city for typos. If you have the modify the generated code, it is wise to st- |
|
33
|
+
| ick with the convention and use these defines, instead of introducing more |
|
34
|
+
| string literals into the code. |
|
35
|
+
\-----------------------------------------------------------------------------*/
|
36
|
+
|
37
|
+
<% @ivars.each do |ivar, type| %>#define k<%= ivar.to_s.cap_first_letter %> @"<%= ivar %>"
|
38
|
+
<% end %>
|
39
|
+
|
40
|
+
/*-----------------------------------------------------------------------------\
|
41
|
+
| IMPLEMENTATION FILE - ANYWHERE IN IMPLEMENTATION AFTER SYNTHESIZE |
|
42
|
+
| This is the actual serialization boilerplate code. Modify this for any spec- |
|
43
|
+
| ial case handling you may have. |
|
44
|
+
\-----------------------------------------------------------------------------*/
|
45
|
+
|
46
|
+
#pragma mark NSCoding
|
47
|
+
|
48
|
+
- (id)initWithCoder:(NSCoder*)aDecoder
|
49
|
+
{
|
50
|
+
self = [self init];
|
51
|
+
if (self) {
|
52
|
+
if (![aDecoder allowsKeyedCoding])
|
53
|
+
[NSException raise:kUnkeyedCodingError
|
54
|
+
format:@"I cannot instaniciate an %@ from an unkeyed coder!", NSStringFromClass([self class])];
|
55
|
+
|
56
|
+
int64_t svid = [aDecoder decodeInt64ForKey:kSerialVersionKey];
|
57
|
+
switch (svid) {
|
58
|
+
case kSerialVersionId: // the current version
|
59
|
+
<% @ivars.each do |ivar, type| %>self.<%= ivar %> = [aDecoder decode<%= type.to_s.cap_first_letter %>ForKey:k<%= ivar.to_s.cap_first_letter %>];
|
60
|
+
<% end %>
|
61
|
+
break;
|
62
|
+
default:
|
63
|
+
[NSException raise:kUnknownSerialVersionIdError
|
64
|
+
format:@"I cannot instaniciate an %@ from an archive of version %d!", NSStringFromClass([self class]), svid];
|
65
|
+
break;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
return self;
|
70
|
+
}
|
71
|
+
|
72
|
+
- (void)encodeWithCoder:(NSCoder*)aCoder
|
73
|
+
{
|
74
|
+
if (![aCoder allowsKeyedCoding])
|
75
|
+
[NSException raise:kUnkeyedCodingError
|
76
|
+
format:@"I cannot serialize an %@ to an unkeyed coder!", NSStringFromClass([self class])];
|
77
|
+
|
78
|
+
[aCoder encodeInt64:kSerialVersionId forKey:kSerialVersionKey];
|
79
|
+
|
80
|
+
<% @ivars.each do |ivar, type| %>[aCoder encode<%= type.to_s.cap_first_letter %>:<%= ivar %> forKey:k<%= ivar.to_s.cap_first_letter %>];
|
81
|
+
<% end %>
|
82
|
+
}
|
data/lib/String.rb
ADDED
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
8
|
+
- 6
|
9
|
+
version: 0.1.6
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Christopher Miller
|
@@ -15,17 +14,16 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-10-17 00:00:00
|
17
|
+
date: 2011-10-17 00:00:00 -06:00
|
18
|
+
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: thor
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
24
|
requirements:
|
26
25
|
- - ">="
|
27
26
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
27
|
segments:
|
30
28
|
- 0
|
31
29
|
version: "0"
|
@@ -35,6 +33,7 @@ description: Conyard is a Ruby experiment in generating source code for use by C
|
|
35
33
|
email: lordsauronthegreat@gmail.com
|
36
34
|
executables:
|
37
35
|
- conyard-vector
|
36
|
+
- conyard-nscoding
|
38
37
|
extensions: []
|
39
38
|
|
40
39
|
extra_rdoc_files: []
|
@@ -42,9 +41,13 @@ extra_rdoc_files: []
|
|
42
41
|
files:
|
43
42
|
- lib/vector/vector.c.erb
|
44
43
|
- lib/vector/vector.h.erb
|
44
|
+
- lib/NSCoding/NSCoding.m.erb
|
45
|
+
- lib/String.rb
|
45
46
|
- bin/conyard-vector
|
47
|
+
- bin/conyard-nscoding
|
46
48
|
- README.md
|
47
49
|
- COPYING.md
|
50
|
+
has_rdoc: true
|
48
51
|
homepage: https://github.com/NSError/Conyard/wiki
|
49
52
|
licenses: []
|
50
53
|
|
@@ -54,22 +57,18 @@ rdoc_options: []
|
|
54
57
|
require_paths:
|
55
58
|
- lib
|
56
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
60
|
requirements:
|
59
61
|
- - ">="
|
60
62
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 57
|
62
63
|
segments:
|
63
64
|
- 1
|
64
65
|
- 8
|
65
66
|
- 7
|
66
67
|
version: 1.8.7
|
67
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
69
|
requirements:
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
hash: 23
|
73
72
|
segments:
|
74
73
|
- 1
|
75
74
|
- 3
|
@@ -78,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
77
|
requirements: []
|
79
78
|
|
80
79
|
rubyforge_project: conyard
|
81
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.3.6
|
82
81
|
signing_key:
|
83
82
|
specification_version: 3
|
84
83
|
summary: Generators for typing-intensive programming tasks.
|