nydp-kalendor 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +34 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/bin/nydp-tests +6 -0
- data/lib/lisp/kalendor-000-core.nydp +96 -0
- data/lib/lisp/tests/date-list-examples.nydp +24 -0
- data/lib/lisp/tests/intersect-examples.nydp +9 -0
- data/lib/lisp/tests/interval-examples.nydp +36 -0
- data/lib/lisp/tests/weekday-examples.nydp +16 -0
- data/lib/nydp/kalendor.rb +100 -0
- data/lib/nydp/kalendor/version.rb +5 -0
- data/nydp-kalendor.gemspec +27 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 019255c54a1f7e930d7e58a1d06bd0a852f12b63
|
4
|
+
data.tar.gz: a2e936010e6057f0bfa1ca1da3b42cd5e83df0b5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8252ed60cf0e8bf3b126c7fffb7f14a8024c554d1e8e4782f07c135c967e0ebd8777e29cf32d0f3656ea2d6ec74d2c4bd636388fd0a2934e3a42d8fb1d8284d0
|
7
|
+
data.tar.gz: 68bcf3619bf0dab1153f975b0f3a44e45a76ddb35233e829bea0551b786feefc63005e6f0a62dfe51fb9773c77be7bcfc21679cc0a4eb259092375da1736ac15
|
data/.gitignore
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
lib/lisp/scratch
|
19
|
+
.#*
|
20
|
+
bm.txt
|
21
|
+
/.bundle/
|
22
|
+
/.yardoc
|
23
|
+
/Gemfile.lock
|
24
|
+
/_yardoc/
|
25
|
+
/coverage/
|
26
|
+
/doc/
|
27
|
+
/pkg/
|
28
|
+
/spec/reports/
|
29
|
+
/tmp/
|
30
|
+
*.bundle
|
31
|
+
*.so
|
32
|
+
*.o
|
33
|
+
*.a
|
34
|
+
mkmf.log
|
data/Gemfile
ADDED
data/MIT-LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2016 Conan Dalton conan@conandalton.net
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Nydp::Kalendor
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'nydp-kalendor'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install nydp-kalendor
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
1. Fork it ( https://github.com/[my-github-username]/nydp-kalendor/fork )
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
31
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/nydp-tests
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
;; kalendor builtins:
|
2
|
+
;;
|
3
|
+
;; named-kalendor management
|
4
|
+
;;
|
5
|
+
;; * kalendor/add (name label builder) ;; create and return a new instance (overriding name if existing)
|
6
|
+
;; * kalendor/find (name) ;; return the instance with this name
|
7
|
+
;; * kalendor/delete (name) ;; return the instance with this name
|
8
|
+
;; * kalendor/names ;; return a list of names
|
9
|
+
;; * kalendor/list ;; return named-kalendor instances
|
10
|
+
;;
|
11
|
+
;; simple builders
|
12
|
+
;;
|
13
|
+
;; * kalendor-build/named
|
14
|
+
;; * kalendor-build/annual
|
15
|
+
;; * kalendor-build/union
|
16
|
+
;; * kalendor-build/intersect
|
17
|
+
;; * kalendor-build/subtract
|
18
|
+
;; * kalendor-build/list
|
19
|
+
;; * kalendor-build/interval
|
20
|
+
;; * kalendor-build/weekday
|
21
|
+
;; * kalendor-build/month
|
22
|
+
;;
|
23
|
+
;; retrieve dates
|
24
|
+
;;
|
25
|
+
;; * kalendor/dates (k from upto) ;; where k is a name, a named kalendor, or a builder
|
26
|
+
;;
|
27
|
+
;;
|
28
|
+
|
29
|
+
(assign kalendor/substitutions
|
30
|
+
{
|
31
|
+
named 'kalendor-build/named
|
32
|
+
weekday 'kalendor-build/weekday
|
33
|
+
annual 'kalendor-build/annual
|
34
|
+
union 'kalendor-build/union
|
35
|
+
intersect 'kalendor-build/intersect
|
36
|
+
subtract 'kalendor-build/subtract
|
37
|
+
list 'kalendor-build/list
|
38
|
+
interval 'kalendor-build/interval
|
39
|
+
weekday 'kalendor-build/weekday
|
40
|
+
month 'kalendor-build/month
|
41
|
+
lookup 'kalendor/find
|
42
|
+
})
|
43
|
+
|
44
|
+
(def kalendor/replace-names (expr)
|
45
|
+
(if (and (sym? expr) (kalendor/find expr))
|
46
|
+
`(kalendor/find ',expr)
|
47
|
+
(and (sym? expr) (hash-get kalendor/substitutions expr))
|
48
|
+
(hash-get kalendor/substitutions expr)
|
49
|
+
(pair? expr)
|
50
|
+
(cons (kalendor/replace-names (car expr))
|
51
|
+
(kalendor/replace-names (cdr expr)))
|
52
|
+
expr))
|
53
|
+
|
54
|
+
(def kalendor/test (kal from upto)
|
55
|
+
(map to-string (kalendor/dates kal from upto)))
|
56
|
+
|
57
|
+
(mac kalendor (name label expr)
|
58
|
+
`(kalendor/add ,(kalendor/replace-names `(named ',name ,label ,expr))))
|
59
|
+
|
60
|
+
(kalendor mondays { en "Mondays" fr "lundis" de "Montag" } (weekday 1))
|
61
|
+
(kalendor tuesdays { en "Tuesdays" fr "mardis" de "Dienstag" } (weekday 2))
|
62
|
+
(kalendor wednesdays { en "Wednesdays" fr "mercredis" de "Mittwoch" } (weekday 3))
|
63
|
+
(kalendor thursdays { en "Thursdays" fr "jeudis" de "Donnerstag" } (weekday 4))
|
64
|
+
(kalendor fridays { en "Fridays" fr "vendredis" de "Freitag" } (weekday 5))
|
65
|
+
(kalendor saturdays { en "Saturdays" fr "samedis" de "Samstag" } (weekday 6))
|
66
|
+
(kalendor sundays { en "Sundays" fr "dimanches" de "Sonntag" } (weekday 0))
|
67
|
+
(kalendor weekends { en "weekends" fr "weekends" de "Wochenende" } (union saturdays sundays))
|
68
|
+
|
69
|
+
(kalendor a-01-jan { en "1 jan" fr "1 janv" de "1. Januar" } (annual 1 1))
|
70
|
+
(kalendor a-17-mar { en "17 mar" fr "17 mars" de "17. Marz" } (annual 17 3))
|
71
|
+
(kalendor a-01-may { en "1 may" fr "1 mai" de "1. May" } (annual 1 5))
|
72
|
+
(kalendor a-08-may { en "8 may" fr "8 mai" de "8. May" } (annual 8 5))
|
73
|
+
(kalendor a-01-jun { en "1 jun" fr "1 juin" de "1. Juni" } (annual 1 6))
|
74
|
+
(kalendor a-14-jul { en "14 jul" fr "14 jul" de "14. Juli" } (annual 14 7))
|
75
|
+
(kalendor a-01-jun { en "1 aug" fr "1 août" de "1. Aug" } (annual 1 8))
|
76
|
+
(kalendor a-15-aug { en "15 aug" fr "15 août" de "15. Aug" } (annual 15 8))
|
77
|
+
(kalendor a-01-nov { en "1 nov" fr "1 nov" de "1. Nov" } (annual 1 11))
|
78
|
+
(kalendor a-25-dec { en "25 dec" fr "25 déc" de "25. Dez" } (annual 25 12))
|
79
|
+
(kalendor a-26-dec { en "26 dec" fr "26 déc" de "26. Dez" } (annual 26 12))
|
80
|
+
|
81
|
+
(kalendor first-monday-may { en "First monday May" fr "premier lundi mai" de "Erste Montag May" } (intersect (weekday 1 1) (month 5)))
|
82
|
+
(kalendor first-monday-jun { en "First monday Jun" fr "premier lundi juin" de "Erste Montag Juni" } (intersect (weekday 1 1) (month 6)))
|
83
|
+
(kalendor first-monday-aug { en "First monday Aug" fr "premier lundi août" de "Erste Montag Aug" } (intersect (weekday 1 1) (month 8)))
|
84
|
+
(kalendor last-monday-oct { en "Last monday oct" fr "dernier lundi oct" de "Letzte Montag Oct" } (intersect (weekday 1 -1) (month 10)))
|
85
|
+
|
86
|
+
(kalendor easter
|
87
|
+
{ en "Easter" fr "Pacques" de "Ostern" }
|
88
|
+
(list "2001-04-15" "2002-03-31" "2003-04-20" "2004-04-11" "2005-03-27" "2006-04-16" "2007-04-08" "2008-03-23" "2009-04-12"
|
89
|
+
"2010-04-04" "2011-04-24" "2012-04-08" "2013-03-31" "2014-04-20" "2015-04-05" "2016-03-27" "2017-04-16" "2018-04-01" "2019-04-21"
|
90
|
+
"2020-04-12" "2021-04-04" "2022-04-17" "2023-04-09" "2024-03-31" "2025-04-20"))
|
91
|
+
|
92
|
+
;; (kalendor
|
93
|
+
;; (subtract (interval "2016-06-01" "2016-08-31")
|
94
|
+
;; (union (union saturdays sundays))
|
95
|
+
;; )
|
96
|
+
;; )
|
@@ -0,0 +1,24 @@
|
|
1
|
+
(examples-for kalendor-build/list
|
2
|
+
("single date"
|
3
|
+
(kalendor/test (kalendor list-test-1
|
4
|
+
nil
|
5
|
+
(list "1984-09-01"))
|
6
|
+
"1900-01-01"
|
7
|
+
"1999-12-31")
|
8
|
+
("1984-09-01"))
|
9
|
+
|
10
|
+
("list of dates"
|
11
|
+
(kalendor/test (kalendor list-test-2
|
12
|
+
nil
|
13
|
+
(list "1984-06-21" "1949-10-03" "1982-06-08"))
|
14
|
+
"1900-01-01"
|
15
|
+
"1999-12-31")
|
16
|
+
("1984-06-21" "1949-10-03" "1982-06-08"))
|
17
|
+
|
18
|
+
("constrained list of dates"
|
19
|
+
(kalendor/test (kalendor list-test-3
|
20
|
+
nil
|
21
|
+
(list "1984-06-21" "1999-02-11" "1949-10-03" "1882-06-08" "2012-06-08"))
|
22
|
+
"1950-01-01"
|
23
|
+
"1999-12-31")
|
24
|
+
("1984-06-21" "1999-02-11")))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
(examples-for kalendor-build/intrsect
|
2
|
+
("every weekend in a given interval"
|
3
|
+
(kalendor/test (kalendor "intersect-text" nil (intersect (union (weekday 6)
|
4
|
+
(weekday 0))
|
5
|
+
(interval "2016-05-01" "2016-06-30")))
|
6
|
+
"2016-06-01"
|
7
|
+
"2016-08-31")
|
8
|
+
("2016-06-04" "2016-06-05" "2016-06-11" "2016-06-12"
|
9
|
+
"2016-06-18" "2016-06-19" "2016-06-25" "2016-06-26")))
|
@@ -0,0 +1,36 @@
|
|
1
|
+
(examples-for kalendor-build/interval
|
2
|
+
("returns nothing when requested interval is before given interval"
|
3
|
+
(kalendor/test (kalendor-build/interval "2016-06-01" "2016-06-30")
|
4
|
+
"2000-01-01"
|
5
|
+
"2000-12-31")
|
6
|
+
())
|
7
|
+
|
8
|
+
("returns some dates when overlapping before"
|
9
|
+
(kalendor/test (kalendor-build/interval "2016-06-01" "2016-06-30")
|
10
|
+
"2000-01-01"
|
11
|
+
"2016-06-08")
|
12
|
+
( "2016-06-01" "2016-06-02" "2016-06-03" "2016-06-04" "2016-06-05" "2016-06-06" "2016-06-07" "2016-06-08"))
|
13
|
+
|
14
|
+
("returns some dates when overlapping inside"
|
15
|
+
(kalendor/test (kalendor-build/interval "2016-06-01" "2016-06-30")
|
16
|
+
"2016-06-14"
|
17
|
+
"2016-06-17")
|
18
|
+
( "2016-06-14" "2016-06-15" "2016-06-16" "2016-06-17"))
|
19
|
+
|
20
|
+
("returns all dates when overlapping outside"
|
21
|
+
(kalendor/test (kalendor-build/interval "2016-06-21" "2016-06-24")
|
22
|
+
"2000-01-14"
|
23
|
+
"2020-12-31")
|
24
|
+
( "2016-06-21" "2016-06-22" "2016-06-23" "2016-06-24"))
|
25
|
+
|
26
|
+
("returns some dates when overlapping after"
|
27
|
+
(kalendor/test (kalendor-build/interval "2016-06-01" "2016-06-30")
|
28
|
+
"2016-06-28"
|
29
|
+
"2020-12-31")
|
30
|
+
( "2016-06-28" "2016-06-29" "2016-06-30"))
|
31
|
+
|
32
|
+
("returns no dates when entirely after"
|
33
|
+
(kalendor/test (kalendor-build/interval "2016-06-01" "2016-06-30")
|
34
|
+
"2016-07-01"
|
35
|
+
"2020-12-31")
|
36
|
+
()))
|
@@ -0,0 +1,16 @@
|
|
1
|
+
(examples-for kalendor-build/weekday
|
2
|
+
("tuesdays"
|
3
|
+
(kalendor/test (kalendor-build/weekday 2) "2016-09-01" "2016-09-30")
|
4
|
+
("2016-09-06" "2016-09-13" "2016-09-20" "2016-09-27"))
|
5
|
+
|
6
|
+
("mondays"
|
7
|
+
(kalendor/test (kalendor-build/weekday 1) "2016-10-01" "2016-10-31")
|
8
|
+
("2016-10-03" "2016-10-10" "2016-10-17" "2016-10-24" "2016-10-31"))
|
9
|
+
|
10
|
+
("second wednesdays"
|
11
|
+
(kalendor/test (kalendor-build/weekday 3 2) "2016-01-01" "2016-12-31")
|
12
|
+
("2016-01-13" "2016-02-10" "2016-03-09" "2016-04-13" "2016-05-11" "2016-06-08" "2016-07-13" "2016-08-10" "2016-09-14" "2016-10-12" "2016-11-09" "2016-12-14"))
|
13
|
+
|
14
|
+
("3rd-last thursdays of 2015"
|
15
|
+
(kalendor/test (kalendor-build/weekday 4 -3) "2015-01-01" "2015-12-31")
|
16
|
+
("2015-01-15" "2015-02-12" "2015-03-12" "2015-04-16" "2015-05-14" "2015-06-11" "2015-07-16" "2015-08-13" "2015-09-10" "2015-10-15" "2015-11-12" "2015-12-17")))
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require "kalendor"
|
2
|
+
require "kalendor/instance/store"
|
3
|
+
require "nydp"
|
4
|
+
require "nydp/kalendor/version"
|
5
|
+
|
6
|
+
module Nydp
|
7
|
+
class Namespace
|
8
|
+
attr_accessor :kalendor_store
|
9
|
+
end
|
10
|
+
|
11
|
+
module Kalendor
|
12
|
+
class Plugin
|
13
|
+
def name ; "Nydp/Kalendor plugin" ; end
|
14
|
+
|
15
|
+
def relative_path name
|
16
|
+
File.expand_path(File.join File.dirname(__FILE__), name)
|
17
|
+
end
|
18
|
+
|
19
|
+
def base_path ; relative_path "../lisp/" ; end
|
20
|
+
|
21
|
+
def load_rake_tasks ; end
|
22
|
+
|
23
|
+
def loadfiles
|
24
|
+
Dir.glob(relative_path '../lisp/kalendor-*.nydp').sort
|
25
|
+
end
|
26
|
+
|
27
|
+
def testfiles
|
28
|
+
Dir.glob(relative_path '../lisp/tests/**/*.nydp')
|
29
|
+
end
|
30
|
+
|
31
|
+
def setup ns
|
32
|
+
store = ns.kalendor_store = ::Kalendor::Instance::Store.new
|
33
|
+
factory = ::Kalendor::Factory.new
|
34
|
+
Symbol.mk("kalendor/add" , ns).assign(Nydp::Kalendor::Builtin::Store::Add .new store, factory)
|
35
|
+
Symbol.mk("kalendor/find" , ns).assign(Nydp::Kalendor::Builtin::Store::Find .new store, factory)
|
36
|
+
Symbol.mk("kalendor/delete" , ns).assign(Nydp::Kalendor::Builtin::Store::Delete .new store, factory)
|
37
|
+
Symbol.mk("kalendor/names" , ns).assign(Nydp::Kalendor::Builtin::Store::Names .new store, factory)
|
38
|
+
Symbol.mk("kalendor/list" , ns).assign(Nydp::Kalendor::Builtin::Store::List .new store, factory)
|
39
|
+
Symbol.mk("kalendor/dates" , ns).assign(Nydp::Kalendor::Builtin::Dates .new store, factory)
|
40
|
+
Symbol.mk("kalendor-build/named" , ns).assign(Nydp::Kalendor::Builtin::Builder::Named .new store, factory)
|
41
|
+
Symbol.mk("kalendor-build/annual" , ns).assign(Nydp::Kalendor::Builtin::Builder::Annual .new store, factory)
|
42
|
+
Symbol.mk("kalendor-build/union" , ns).assign(Nydp::Kalendor::Builtin::Builder::Union .new store, factory)
|
43
|
+
Symbol.mk("kalendor-build/intersect", ns).assign(Nydp::Kalendor::Builtin::Builder::Intersect.new store, factory)
|
44
|
+
Symbol.mk("kalendor-build/subtract" , ns).assign(Nydp::Kalendor::Builtin::Builder::Subtract .new store, factory)
|
45
|
+
Symbol.mk("kalendor-build/list" , ns).assign(Nydp::Kalendor::Builtin::Builder::DateList .new store, factory)
|
46
|
+
Symbol.mk("kalendor-build/interval" , ns).assign(Nydp::Kalendor::Builtin::Builder::Interval .new store, factory)
|
47
|
+
Symbol.mk("kalendor-build/weekday" , ns).assign(Nydp::Kalendor::Builtin::Builder::Weekday .new store, factory)
|
48
|
+
Symbol.mk("kalendor-build/month" , ns).assign(Nydp::Kalendor::Builtin::Builder::Month .new store, factory)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
module Builtin
|
53
|
+
class Base
|
54
|
+
include Nydp::Builtin::Base
|
55
|
+
|
56
|
+
def initialize store, factory
|
57
|
+
@store = store
|
58
|
+
@factory = factory
|
59
|
+
end
|
60
|
+
|
61
|
+
def lookup kal
|
62
|
+
kal = n2r kal
|
63
|
+
kal.respond_to?(:get_dates) ? kal : @store.find(kal)
|
64
|
+
end
|
65
|
+
|
66
|
+
def name ; "kalendor/#{super}" ; end
|
67
|
+
end
|
68
|
+
|
69
|
+
class Dates < Base
|
70
|
+
include ::Kalendor::DateHelper
|
71
|
+
def invoke_4 vm, kal, from, upto
|
72
|
+
vm.push_arg vm.r2n lookup(kal).get_dates(to_date(from), to_date(upto)).to_a
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module Store
|
77
|
+
class Add < Base ; def builtin_invoke_2 vm, kal ; vm.push_arg vm.r2n @store.add n2r kal ; end ; end
|
78
|
+
class Find < Base ; def builtin_invoke_2 vm, name ; vm.push_arg vm.r2n @store.find n2r name ; end ; end
|
79
|
+
class Delete < Base ; def builtin_invoke_2 vm, name ; vm.push_arg vm.r2n @store.delete n2r name ; end ; end
|
80
|
+
class Names < Base ; def builtin_invoke_1 vm ; vm.push_arg vm.r2n @store.names ; end ; end
|
81
|
+
class List < Base ; def builtin_invoke_1 vm ; vm.push_arg vm.r2n @store.list ; end ; end
|
82
|
+
end
|
83
|
+
|
84
|
+
module Builder
|
85
|
+
class Weekday < Base ; def builtin_invoke_3 vm, day, nth ; vm.push_arg @factory.weekday day, nth ; end
|
86
|
+
def builtin_invoke_2 vm, day ; vm.push_arg @factory.weekday day ; end ; end
|
87
|
+
class Annual < Base ; def builtin_invoke_3 vm, date, month ; vm.push_arg @factory.annual date, month ; end ; end
|
88
|
+
class Union < Base ; def builtin_invoke vm, args ; vm.push_arg @factory.union *(n2r args) ; end ; end
|
89
|
+
class Intersect < Base ; def builtin_invoke vm, args ; vm.push_arg @factory.intersect *(n2r args) ; end ; end
|
90
|
+
class Subtract < Base ; def builtin_invoke_3 vm, keep, toss ; vm.push_arg @factory.subtract keep, toss ; end ; end
|
91
|
+
class DateList < Base ; def builtin_invoke vm, args ; vm.push_arg @factory.list *(n2r args) ; end ; end
|
92
|
+
class Interval < Base ; def builtin_invoke_3 vm, from, upto ; vm.push_arg @factory.interval from, upto ; end ; end
|
93
|
+
class Month < Base ; def builtin_invoke_2 vm, m ; vm.push_arg @factory.month m ; end ; end
|
94
|
+
class Named < Base ; def builtin_invoke_4 vm, name, label, kal ; vm.push_arg @factory.named n2r(name), n2r(label), kal ; end ; end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
Nydp.plug_in Nydp::Kalendor::Plugin.new
|
@@ -0,0 +1,27 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'nydp/kalendor/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "nydp-kalendor"
|
7
|
+
spec.version = Nydp::Kalendor::VERSION
|
8
|
+
spec.authors = ["conanite"]
|
9
|
+
spec.email = ["conan@conandalton.net"]
|
10
|
+
spec.summary = %q{nydp integration for Kalendor gem}
|
11
|
+
spec.description = %q{provides functions and macros to simplify date management within nydp}
|
12
|
+
spec.homepage = "https://github.com/conanite/nydp-kalendor"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
23
|
+
spec.add_development_dependency 'rspec_numbering_formatter'
|
24
|
+
|
25
|
+
spec.add_dependency 'nydp', '~> 0.2'
|
26
|
+
spec.add_dependency 'kalendor'
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nydp-kalendor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- conanite
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec_numbering_formatter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: nydp
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: kalendor
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: provides functions and macros to simplify date management within nydp
|
98
|
+
email:
|
99
|
+
- conan@conandalton.net
|
100
|
+
executables:
|
101
|
+
- nydp-tests
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- Gemfile
|
107
|
+
- MIT-LICENSE.txt
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- bin/nydp-tests
|
111
|
+
- lib/lisp/kalendor-000-core.nydp
|
112
|
+
- lib/lisp/tests/date-list-examples.nydp
|
113
|
+
- lib/lisp/tests/intersect-examples.nydp
|
114
|
+
- lib/lisp/tests/interval-examples.nydp
|
115
|
+
- lib/lisp/tests/weekday-examples.nydp
|
116
|
+
- lib/nydp/kalendor.rb
|
117
|
+
- lib/nydp/kalendor/version.rb
|
118
|
+
- nydp-kalendor.gemspec
|
119
|
+
homepage: https://github.com/conanite/nydp-kalendor
|
120
|
+
licenses:
|
121
|
+
- MIT
|
122
|
+
metadata: {}
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
requirements: []
|
138
|
+
rubyforge_project:
|
139
|
+
rubygems_version: 2.2.2
|
140
|
+
signing_key:
|
141
|
+
specification_version: 4
|
142
|
+
summary: nydp integration for Kalendor gem
|
143
|
+
test_files: []
|