ankirb 0.3.1 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/ankirb.gemspec +1 -0
- data/lib/ankirb/anki/card.rb +15 -0
- data/lib/ankirb/anki/deck.rb +23 -0
- data/lib/ankirb/export/apkg.rb +4 -1
- data/lib/ankirb/util/media.rb +3 -2
- data/lib/ankirb/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be0143b8e8b71da17d448f58ab3d80649722194f
|
4
|
+
data.tar.gz: 28be919ff3e50b7fb0834efb7818841da2c37d89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 289d2d9b779f9dbfc1f205f80ccaebc61ce39a888642a1303cd1411364979bcf9830ff5293f712d888c1a552c78b0a18b1c14908ac5130f58ea3e9a6dbec3fc5
|
7
|
+
data.tar.gz: 2699677db6ee80aa15174a8a67ea17782dde17a11d56a77294d645a28faee40c510cbee6fcbd3974d4df5595bbf47f3caf45b660ee93eb3ae0d23ee111858ad6
|
data/README.md
CHANGED
@@ -37,6 +37,9 @@ card.back << "dexters_lab_omelette.wav"
|
|
37
37
|
#add card to the deck
|
38
38
|
deck.add_card card
|
39
39
|
|
40
|
+
#add the reverse version of the card
|
41
|
+
deck.add_card card.invert
|
42
|
+
|
40
43
|
#export to ~/Anki/Decks/FancyExampleDeck.apkg
|
41
44
|
Anki::apkg.export deck, "~/Anki/Decks"
|
42
45
|
```
|
data/ankirb.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
26
|
+
spec.add_development_dependency 'pry-byebug'
|
26
27
|
spec.add_runtime_dependency 'rake', '~> 10.5'
|
27
28
|
spec.add_runtime_dependency 'base91', '0.0.1'
|
28
29
|
spec.add_runtime_dependency 'rubyzip', '~> 1.1'
|
data/lib/ankirb/anki/card.rb
CHANGED
@@ -19,9 +19,24 @@ module Anki
|
|
19
19
|
@back
|
20
20
|
end
|
21
21
|
|
22
|
+
# returns a new card with the front and back of the original inverted
|
23
|
+
def invert
|
24
|
+
c = Anki::Card.new(front: @back.to_s, back: @front.to_s)
|
25
|
+
c.front.media = @back.media
|
26
|
+
c.back.media = @front.media
|
27
|
+
c
|
28
|
+
end
|
29
|
+
|
30
|
+
# flips the front and back of this card
|
31
|
+
def invert!
|
32
|
+
@front, @back = @back, @front
|
33
|
+
end
|
34
|
+
|
35
|
+
# is media attached to this card?
|
22
36
|
def has_media?
|
23
37
|
!@front.media.empty? or !back.media.empty?
|
24
38
|
end
|
39
|
+
|
25
40
|
def front= value
|
26
41
|
@front.content = value
|
27
42
|
end
|
data/lib/ankirb/anki/deck.rb
CHANGED
@@ -17,11 +17,28 @@ module Anki
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
# adds a card to the deck
|
20
21
|
def add_card card
|
21
22
|
card.deck = self
|
22
23
|
@cards[card.id] = card
|
23
24
|
end
|
24
25
|
|
26
|
+
# adds a card, and then inserts the inverted version of the card immediately after
|
27
|
+
def add_card_with_inversion card
|
28
|
+
add_card card
|
29
|
+
add_card card.invert
|
30
|
+
end
|
31
|
+
|
32
|
+
# add inverted versions of the cards at the end of the deck
|
33
|
+
def add_inversions
|
34
|
+
@cards.values.each {|c| add_card c.invert }
|
35
|
+
end
|
36
|
+
|
37
|
+
# invert the faces of every card in place
|
38
|
+
def invert!
|
39
|
+
@cards.values.each {|c| c.invert! }
|
40
|
+
end
|
41
|
+
|
25
42
|
def cards
|
26
43
|
@cards.values
|
27
44
|
end
|
@@ -29,6 +46,12 @@ module Anki
|
|
29
46
|
def [] id
|
30
47
|
@cards[id]
|
31
48
|
end
|
49
|
+
|
50
|
+
def initialize_copy(orig)
|
51
|
+
super
|
52
|
+
orig.instance_variable_set(:@cards, {})
|
53
|
+
@cards.values.each { |c| orig.add_card c.dup }
|
54
|
+
end
|
32
55
|
end
|
33
56
|
|
34
57
|
|
data/lib/ankirb/export/apkg.rb
CHANGED
@@ -9,7 +9,10 @@ module Anki
|
|
9
9
|
|
10
10
|
class APKGExporter
|
11
11
|
|
12
|
+
# exports the provided deck object to an apkg file at the specified path
|
12
13
|
def self.export deck, path
|
14
|
+
deck = deck.dup
|
15
|
+
|
13
16
|
Dir.mktmpdir do |dir|
|
14
17
|
db = DB.create File.join(dir,'collection.anki2')
|
15
18
|
|
@@ -33,7 +36,7 @@ module Anki
|
|
33
36
|
def self.export_media deck, path
|
34
37
|
media_cards = deck.cards.select{|c| c.has_media? }
|
35
38
|
faces_with_media = media_cards.reduce([]){|arr,c| arr.push(c.front,c.back)}.select{|f|!f.media.empty?}
|
36
|
-
media ={}
|
39
|
+
media = {}
|
37
40
|
|
38
41
|
faces_with_media.each do |face|
|
39
42
|
face.media.each do |media_reference|
|
data/lib/ankirb/util/media.rb
CHANGED
@@ -11,10 +11,11 @@ module Anki
|
|
11
11
|
if str.match(/{{img}}/)
|
12
12
|
str.sub!(/{{img}}/, tag)
|
13
13
|
else
|
14
|
-
str << tag
|
14
|
+
str << tag unless str.include? tag
|
15
15
|
end
|
16
16
|
when media.audio?, media.video? #video also has a sound tag, idk
|
17
|
-
|
17
|
+
tag = "[sound:#{File.basename(filepath)}]"
|
18
|
+
str << tag unless str.include? tag
|
18
19
|
else
|
19
20
|
raise "Unknown media type - #{filepath}"
|
20
21
|
end
|
data/lib/ankirb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ankirb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donald Hutchison
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-byebug
|
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'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|