artbase-importers 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/CHANGELOG.md +3 -0
- data/Manifest.txt +9 -0
- data/README.md +27 -0
- data/Rakefile +40 -0
- data/lib/artbase-importers/collection.rb +37 -0
- data/lib/artbase-importers/database.rb +66 -0
- data/lib/artbase-importers/importer.rb +39 -0
- data/lib/artbase-importers/version.rb +25 -0
- data/lib/artbase-importers.rb +22 -0
- metadata +134 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 721fb394f1bddd2d9daee7433856a6505b733d3aedc553dbe59cce8cc5624e2f
|
4
|
+
data.tar.gz: 6df5b15fe095fde357091944a8497eb51b1fbda0c6d6893782cf7a66e8b8653b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 35151037dec36107f722c36e03184937103fe3d2c3cf82175a337a4a56d570c7a076e3afa413bd63b1d06b3a93d32a7b16fc1bf021f0992a559086c05428b029
|
7
|
+
data.tar.gz: 1b1eeb3d065407ed290c5850ae3314a025a95dd763499952aaf651912828f1071c04a9875667661a3f6eb1113458f7858e36e489d52dc10d5f65e602eb1d53f2
|
data/CHANGELOG.md
ADDED
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# artbase-importers - artbase (SQL) database machinery 'n' support; build single-file SQLite artbase.dbs and more (via active-record machinery)
|
2
|
+
|
3
|
+
|
4
|
+
* home :: [github.com/pixelartexchange/artbase](https://github.com/pixelartexchange/artbase)
|
5
|
+
* bugs :: [github.com/pixelartexchange/artbase/issues](https://github.com/pixelartexchange/artbase/issues)
|
6
|
+
* gem :: [rubygems.org/gems/artbase-importers](https://rubygems.org/gems/artbase-importerss)
|
7
|
+
* rdoc :: [rubydoc.info/gems/artbase-importers](http://rubydoc.info/gems/artbase-importers)
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
To be done
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
## License
|
20
|
+
|
21
|
+
The `artbase` scripts are dedicated to the public domain.
|
22
|
+
Use it as you please with no restrictions whatsoever.
|
23
|
+
|
24
|
+
|
25
|
+
## Questions? Comments?
|
26
|
+
|
27
|
+
Post them on the [D.I.Y. Punk (Pixel) Art reddit](https://old.reddit.com/r/DIYPunkArt). Thanks.
|
data/Rakefile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
require './lib/artbase-importers/version.rb'
|
3
|
+
|
4
|
+
|
5
|
+
###
|
6
|
+
# hack/ quick fix for broken intuit_values - overwrite with dummy
|
7
|
+
class Hoe
|
8
|
+
def intuit_values( input ); end
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
Hoe.spec 'artbase-importers' do
|
13
|
+
|
14
|
+
self.version = Artbase::Module::Importers::VERSION
|
15
|
+
|
16
|
+
self.summary = "artbase-importers - artbase (SQL) database machinery 'n' support; build single-file SQLite artbase.dbs and more (via active-record machinery)"
|
17
|
+
self.description = summary
|
18
|
+
|
19
|
+
self.urls = { home: 'https://github.com/pixelartexchange/artbase'}
|
20
|
+
|
21
|
+
self.author = 'Gerald Bauer'
|
22
|
+
self.email = 'wwwmake@googlegroups.com'
|
23
|
+
|
24
|
+
# switch extension to .markdown for gihub formatting
|
25
|
+
self.readme_file = 'README.md'
|
26
|
+
self.history_file = 'CHANGELOG.md'
|
27
|
+
|
28
|
+
self.extra_deps = [
|
29
|
+
['artbase-cocos', '>= 0.0.1'],
|
30
|
+
['sqlite3'],
|
31
|
+
['activerecord'],
|
32
|
+
]
|
33
|
+
|
34
|
+
self.licenses = ['Public Domain']
|
35
|
+
|
36
|
+
self.spec_extras = {
|
37
|
+
required_ruby_version: '>= 2.2.2'
|
38
|
+
}
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
module Artbase
|
3
|
+
class Base ## "abstract" Base collection - check -use a different name - why? why not?
|
4
|
+
|
5
|
+
def import( importer )
|
6
|
+
|
7
|
+
each_meta do |meta, id|
|
8
|
+
puts "==> #{id}"
|
9
|
+
pp meta.attributes
|
10
|
+
puts
|
11
|
+
h = importer.to_metadata( meta.attributes )
|
12
|
+
## auto-add id (as intenger) - why? why not?
|
13
|
+
h[ 'id' ] = id
|
14
|
+
|
15
|
+
|
16
|
+
img = Image.read( "./#{@slug}/#{@width}x#{@height}/#{id}.png" )
|
17
|
+
|
18
|
+
image = "data:image/png;base64, "
|
19
|
+
image += Base64.strict_encode64( img.to_blob )
|
20
|
+
|
21
|
+
puts "image:"
|
22
|
+
puts image
|
23
|
+
|
24
|
+
rec = Database::Metadata.new( h )
|
25
|
+
rec.image = image
|
26
|
+
|
27
|
+
## check for custom callback hooks
|
28
|
+
if importer.respond_to?( :before_save )
|
29
|
+
importer.before_save( rec )
|
30
|
+
end
|
31
|
+
|
32
|
+
rec.save!
|
33
|
+
end
|
34
|
+
end # method import
|
35
|
+
|
36
|
+
end # class Base
|
37
|
+
end # module Artbase
|
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
module Artbase
|
3
|
+
|
4
|
+
module Database
|
5
|
+
|
6
|
+
####
|
7
|
+
# keep database models inside Database namespace for now
|
8
|
+
# (to avoid class with Artbase::Metadata) - why? why not?
|
9
|
+
class Metadata < ActiveRecord::Base
|
10
|
+
self.table_name = "metadata"
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def self.create( spec )
|
15
|
+
ActiveRecord::Schema.define do
|
16
|
+
create_table :metadata do |t|
|
17
|
+
|
18
|
+
spec.each do |column|
|
19
|
+
column_name = column[0].to_sym
|
20
|
+
column_opts = column[1] || {}
|
21
|
+
column_type = (column[2] || 'string').to_sym
|
22
|
+
|
23
|
+
t.__send__( column_type, column_name, **column_opts )
|
24
|
+
end
|
25
|
+
|
26
|
+
t.string :image, null: false
|
27
|
+
|
28
|
+
t.timestamps
|
29
|
+
end
|
30
|
+
end # Schema.define
|
31
|
+
end # method self.create
|
32
|
+
|
33
|
+
|
34
|
+
def self.connect( database='./artbase.db' )
|
35
|
+
|
36
|
+
config = { adapter: 'sqlite3',
|
37
|
+
database: database,
|
38
|
+
}
|
39
|
+
|
40
|
+
puts "Connecting to db using settings: "
|
41
|
+
pp config
|
42
|
+
ActiveRecord::Base.establish_connection( config )
|
43
|
+
# ActiveRecord::Base.logger = Logger.new( STDOUT )
|
44
|
+
|
45
|
+
## if sqlite3 add (use) some pragmas for speedups
|
46
|
+
## note: if in memory database e.g. ':memory:' no pragma needed!!
|
47
|
+
## try to speed up sqlite
|
48
|
+
## see http://www.sqlite.org/pragma.html
|
49
|
+
con = ActiveRecord::Base.connection
|
50
|
+
con.execute( 'PRAGMA synchronous=OFF;' )
|
51
|
+
con.execute( 'PRAGMA journal_mode=OFF;' )
|
52
|
+
con.execute( 'PRAGMA temp_store=MEMORY;' )
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def self.auto_migrate!( spec )
|
58
|
+
# first time? - auto-run db migratation, that is, create db tables
|
59
|
+
unless Metadata.table_exists?
|
60
|
+
create( spec )
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
end # module Database
|
66
|
+
end # module Artbase
|
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
module Artbase
|
3
|
+
|
4
|
+
class Importer ## use to import metadata into database
|
5
|
+
|
6
|
+
def self.read( path )
|
7
|
+
code = read_text( path )
|
8
|
+
parse( code )
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.parse( code )
|
12
|
+
importer = new
|
13
|
+
importer.instance_eval( code )
|
14
|
+
importer
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def slugify( str )
|
19
|
+
str = str.strip.downcase
|
20
|
+
str = str.gsub( /[ ]/, '_' )
|
21
|
+
str
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
############
|
27
|
+
# defaults ("built-ins") method for to_metadata, etc.
|
28
|
+
|
29
|
+
def to_metadata( attributes )
|
30
|
+
h = {}
|
31
|
+
attributes.each do |key,value|
|
32
|
+
slug = slugify( key )
|
33
|
+
h[ slug ] = value
|
34
|
+
end
|
35
|
+
h
|
36
|
+
end
|
37
|
+
end # class Importer
|
38
|
+
|
39
|
+
end # module Artbase
|
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Artbase
|
4
|
+
module Module
|
5
|
+
module Importers
|
6
|
+
MAJOR = 0
|
7
|
+
MINOR = 0
|
8
|
+
PATCH = 1
|
9
|
+
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
10
|
+
|
11
|
+
def self.version
|
12
|
+
VERSION
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.banner
|
16
|
+
"artbase-importers/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.root
|
20
|
+
File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
|
21
|
+
end
|
22
|
+
|
23
|
+
end # module Importers
|
24
|
+
end # module Module
|
25
|
+
end # module Artbase
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'artbase-cocos'
|
3
|
+
|
4
|
+
|
5
|
+
## add activerecord (database) machinery
|
6
|
+
require 'sqlite3'
|
7
|
+
require 'active_record'
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## our own code
|
12
|
+
require_relative 'artbase-importers/version'
|
13
|
+
require_relative 'artbase-importers/database'
|
14
|
+
require_relative 'artbase-importers/importer'
|
15
|
+
require_relative 'artbase-importers/collection'
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
puts Artbase::Module::Importers.banner # say hello
|
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: artbase-importers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gerald Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: artbase-cocos
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sqlite3
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
- - "<"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '7'
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '4.0'
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '7'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: hoe
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.23'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.23'
|
89
|
+
description: artbase-importers - artbase (SQL) database machinery 'n' support; build
|
90
|
+
single-file SQLite artbase.dbs and more (via active-record machinery)
|
91
|
+
email: wwwmake@googlegroups.com
|
92
|
+
executables: []
|
93
|
+
extensions: []
|
94
|
+
extra_rdoc_files:
|
95
|
+
- CHANGELOG.md
|
96
|
+
- Manifest.txt
|
97
|
+
- README.md
|
98
|
+
files:
|
99
|
+
- CHANGELOG.md
|
100
|
+
- Manifest.txt
|
101
|
+
- README.md
|
102
|
+
- Rakefile
|
103
|
+
- lib/artbase-importers.rb
|
104
|
+
- lib/artbase-importers/collection.rb
|
105
|
+
- lib/artbase-importers/database.rb
|
106
|
+
- lib/artbase-importers/importer.rb
|
107
|
+
- lib/artbase-importers/version.rb
|
108
|
+
homepage: https://github.com/pixelartexchange/artbase
|
109
|
+
licenses:
|
110
|
+
- Public Domain
|
111
|
+
metadata: {}
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options:
|
114
|
+
- "--main"
|
115
|
+
- README.md
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 2.2.2
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
requirements: []
|
129
|
+
rubygems_version: 3.3.7
|
130
|
+
signing_key:
|
131
|
+
specification_version: 4
|
132
|
+
summary: artbase-importers - artbase (SQL) database machinery 'n' support; build single-file
|
133
|
+
SQLite artbase.dbs and more (via active-record machinery)
|
134
|
+
test_files: []
|