fort 0.0.0 → 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.
- data/fort.gemspec +19 -0
- data/lib/fort/type/character_type.rb +14 -11
- data/lib/fort/type/complex_type.rb +6 -9
- data/lib/fort/type/integer_type.rb +6 -10
- data/lib/fort/type/logical_type.rb +2 -5
- data/lib/fort/type/real_type.rb +6 -9
- data/lib/fort/type.rb +22 -9
- data/lib/fort/version.rb +1 -1
- data/test/fort/type/test_character_type.rb +7 -13
- data/test/fort/type/test_complex_type.rb +5 -9
- data/test/fort/type/test_integer_type.rb +5 -9
- data/test/fort/type/test_logical_type.rb +5 -5
- data/test/fort/type/test_real_type.rb +5 -19
- metadata +6 -5
data/fort.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ruby_patch'
|
2
|
+
|
3
|
+
gem_name = File.basename(__DIR__)
|
4
|
+
lib = File.join(__DIR__, 'lib')
|
5
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
+
require "#{gem_name}"
|
7
|
+
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.files = `git ls-files`.split
|
10
|
+
s.name = gem_name
|
11
|
+
s.summary = "Library for Fortran 90 and newer."
|
12
|
+
s.version = ::Fort::VERSION
|
13
|
+
s.add_runtime_dependency 'ruby_patch', '~> 1.1'
|
14
|
+
s.add_development_dependency 'pry', '~> 0.9'
|
15
|
+
s.author = 'kshramt'
|
16
|
+
s.description = "Ruby library for Fortran 90 and newer."
|
17
|
+
s.required_ruby_version = '~> 1.9'
|
18
|
+
s.test_files.concat `git ls-files test`.split.select{|path| path =~ /test_[^\/]+.rb/}
|
19
|
+
end
|
@@ -4,24 +4,27 @@ module Fort
|
|
4
4
|
require 'ruby_patch'
|
5
5
|
extend ::RubyPatch::AutoLoad
|
6
6
|
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :len
|
8
8
|
|
9
9
|
def initialize(dim = 0, len = 1)
|
10
10
|
super(dim)
|
11
11
|
@len = len
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
@sym = "c#{len_suffix}"
|
12
|
+
@len_suf = case @len
|
13
|
+
when '*'
|
14
|
+
'Ast'
|
15
|
+
when ':'
|
16
|
+
'Colon'
|
17
|
+
else
|
18
|
+
@len
|
19
|
+
end
|
21
20
|
end
|
22
21
|
|
23
22
|
def to_s
|
24
|
-
"
|
23
|
+
"#{super}Len#{@len_suf}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def declare
|
27
|
+
"#{@stem}(len = #{@len})#{super}"
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
@@ -4,22 +4,19 @@ module Fort
|
|
4
4
|
require 'ruby_patch'
|
5
5
|
extend ::RubyPatch::AutoLoad
|
6
6
|
|
7
|
-
|
8
|
-
32 => 'S', # Single
|
9
|
-
64 => 'D', # Double
|
10
|
-
128 => 'Q', # Quad
|
11
|
-
}
|
12
|
-
|
13
|
-
attr_reader :sym, :kind
|
7
|
+
attr_reader :kind
|
14
8
|
|
15
9
|
def initialize(dim = 0, kind = 32)
|
16
10
|
super(dim)
|
17
11
|
@kind = kind
|
18
|
-
@sym = "z#{KIND_SYM[@kind]}"
|
19
12
|
end
|
20
13
|
|
21
14
|
def to_s
|
22
|
-
|
15
|
+
"#{super}Kind#{@kind}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def declare
|
19
|
+
"#{@stem}(REAL#{@kind})#{super}"
|
23
20
|
end
|
24
21
|
end
|
25
22
|
end
|
@@ -4,23 +4,19 @@ module Fort
|
|
4
4
|
require 'ruby_patch'
|
5
5
|
extend ::RubyPatch::AutoLoad
|
6
6
|
|
7
|
-
|
8
|
-
8 => 'Hh', # Harf-Harf
|
9
|
-
16 => 'H', # Harf
|
10
|
-
32 => 'S', # Single
|
11
|
-
64 => 'D' # Double
|
12
|
-
}
|
13
|
-
|
14
|
-
attr_reader :sym, :kind
|
7
|
+
attr_reader :kind
|
15
8
|
|
16
9
|
def initialize(dim = 0, kind = 32)
|
17
10
|
super(dim)
|
18
11
|
@kind = kind
|
19
|
-
@sym = "i#{KIND_SYM[@kind]}"
|
20
12
|
end
|
21
13
|
|
22
14
|
def to_s
|
23
|
-
|
15
|
+
"#{super}Kind#{@kind}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def declare
|
19
|
+
"#{@stem}(INT#{@kind})#{super}"
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
data/lib/fort/type/real_type.rb
CHANGED
@@ -4,22 +4,19 @@ module Fort
|
|
4
4
|
require 'ruby_patch'
|
5
5
|
extend ::RubyPatch::AutoLoad
|
6
6
|
|
7
|
-
|
8
|
-
32 => 'S', # Single
|
9
|
-
64 => 'D', # Double
|
10
|
-
128 => 'Q', # Quad
|
11
|
-
}
|
12
|
-
|
13
|
-
attr_reader :sym, :kind
|
7
|
+
attr_reader :kind
|
14
8
|
|
15
9
|
def initialize(dim = 0, kind = 32)
|
16
10
|
super(dim)
|
17
11
|
@kind = kind
|
18
|
-
@sym = "r#{KIND_SYM[@kind]}"
|
19
12
|
end
|
20
13
|
|
21
14
|
def to_s
|
22
|
-
|
15
|
+
"#{super}Kind#{@kind}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def declare
|
19
|
+
"#{@stem}(REAL#{@kind})#{super}"
|
23
20
|
end
|
24
21
|
end
|
25
22
|
end
|
data/lib/fort/type.rb
CHANGED
@@ -5,26 +5,39 @@ module Fort
|
|
5
5
|
|
6
6
|
USE_ISO_FORTRAN_ENV = "use, intrinsic:: iso_fortran_env, only: INT8, INT16, INT32, INT64, REAL32, REAL64, REAL128"
|
7
7
|
|
8
|
-
attr_reader :dim
|
8
|
+
attr_reader :dim, :stem
|
9
9
|
|
10
10
|
def initialize(dim = 0)
|
11
11
|
@dim = dim
|
12
|
+
@stem = self.class.to_s.split('::').last.sub(/Type\z/, '')
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
"#{@stem}Dim#{dim}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def declare
|
20
|
+
if @dim >= 1
|
21
|
+
", dimension#{self.parenthesis}"
|
22
|
+
else
|
23
|
+
""
|
24
|
+
end
|
12
25
|
end
|
13
26
|
|
14
27
|
def colons
|
15
|
-
|
28
|
+
([':']*@dim).join(', ')
|
16
29
|
end
|
17
30
|
|
18
31
|
def parenthesis
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
32
|
+
if @dim >= 1
|
33
|
+
"(#{self.colons})"
|
34
|
+
else
|
35
|
+
''
|
36
|
+
end
|
24
37
|
end
|
25
38
|
|
26
|
-
def
|
27
|
-
|
39
|
+
def format
|
40
|
+
"#{@dim}"
|
28
41
|
end
|
29
42
|
end
|
30
43
|
end
|
data/lib/fort/version.rb
CHANGED
@@ -8,20 +8,14 @@ class TestCharacterType < ::MiniTest::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_to_s
|
11
|
-
assert_equal(@cAst_0.to_s, "
|
12
|
-
assert_equal(@cColon_1.to_s, "
|
13
|
-
assert_equal(@c3_2.to_s, "
|
11
|
+
assert_equal(@cAst_0.to_s, "CharacterDim0LenAst")
|
12
|
+
assert_equal(@cColon_1.to_s, "CharacterDim1LenColon")
|
13
|
+
assert_equal(@c3_2.to_s, "CharacterDim2Len3")
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
assert_equal(@cAst_0.
|
18
|
-
assert_equal(@cColon_1.
|
19
|
-
assert_equal(@c3_2.
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_suf
|
23
|
-
assert_equal(@cAst_0.suf, '_cAst_0')
|
24
|
-
assert_equal(@cColon_1.suf, '_cColon_1')
|
25
|
-
assert_equal(@c3_2.suf, '_c3_2')
|
16
|
+
def test_declare
|
17
|
+
assert_equal(@cAst_0.declare, "Character(len = *)")
|
18
|
+
assert_equal(@cColon_1.declare, "Character(len = :), dimension(:)")
|
19
|
+
assert_equal(@c3_2.declare, "Character(len = 3), dimension(:, :)")
|
26
20
|
end
|
27
21
|
end
|
@@ -6,17 +6,13 @@ class TestComplexType < ::MiniTest::Unit::TestCase
|
|
6
6
|
@s_2 = ::Fort::Type::ComplexType.new(2, 32)
|
7
7
|
end
|
8
8
|
|
9
|
-
def test_KIND_SYM
|
10
|
-
assert(::Fort::Type::ComplexType::KIND_SYM)
|
11
|
-
end
|
12
|
-
|
13
9
|
def test_to_s
|
14
|
-
assert_equal(@d_0.to_s, "
|
15
|
-
assert_equal(@s_2.to_s, "
|
10
|
+
assert_equal(@d_0.to_s, "ComplexDim0Kind64")
|
11
|
+
assert_equal(@s_2.to_s, "ComplexDim2Kind32")
|
16
12
|
end
|
17
13
|
|
18
|
-
def
|
19
|
-
assert_equal(@d_0.
|
20
|
-
assert_equal(@s_2.
|
14
|
+
def test_declare
|
15
|
+
assert_equal(@d_0.declare, "Complex(REAL64)")
|
16
|
+
assert_equal(@s_2.declare, "Complex(REAL32), dimension(:, :)")
|
21
17
|
end
|
22
18
|
end
|
@@ -6,17 +6,13 @@ class TestIntegerType < ::MiniTest::Unit::TestCase
|
|
6
6
|
@s_2 = ::Fort::Type::IntegerType.new(2, 32)
|
7
7
|
end
|
8
8
|
|
9
|
-
def test_KIND_SYM
|
10
|
-
assert(::Fort::Type::IntegerType::KIND_SYM)
|
11
|
-
end
|
12
|
-
|
13
9
|
def test_to_s
|
14
|
-
assert_equal(@d_0.to_s, "
|
15
|
-
assert_equal(@s_2.to_s, "
|
10
|
+
assert_equal(@d_0.to_s, "IntegerDim0Kind64")
|
11
|
+
assert_equal(@s_2.to_s, "IntegerDim2Kind32")
|
16
12
|
end
|
17
13
|
|
18
|
-
def
|
19
|
-
assert_equal(@d_0.
|
20
|
-
assert_equal(@s_2.
|
14
|
+
def test_declare
|
15
|
+
assert_equal(@d_0.declare, "Integer(INT64)")
|
16
|
+
assert_equal(@s_2.declare, "Integer(INT32), dimension(:, :)")
|
21
17
|
end
|
22
18
|
end
|
@@ -7,12 +7,12 @@ class TestLogicalType < ::MiniTest::Unit::TestCase
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_to_s
|
10
|
-
assert_equal(@l0.to_s, "
|
11
|
-
assert_equal(@l2.to_s, "
|
10
|
+
assert_equal(@l0.to_s, "LogicalDim0")
|
11
|
+
assert_equal(@l2.to_s, "LogicalDim2")
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
assert_equal(@l0.
|
16
|
-
assert_equal(@l2.
|
14
|
+
def test_declare
|
15
|
+
assert_equal(@l0.declare, "Logical")
|
16
|
+
assert_equal(@l2.declare, "Logical, dimension(:, :)")
|
17
17
|
end
|
18
18
|
end
|
@@ -6,27 +6,13 @@ class TestRealType < ::MiniTest::Unit::TestCase
|
|
6
6
|
@s_2 = ::Fort::Type::RealType.new(2, 32)
|
7
7
|
end
|
8
8
|
|
9
|
-
def test_KIND_SYM
|
10
|
-
assert(::Fort::Type::RealType::KIND_SYM)
|
11
|
-
end
|
12
|
-
|
13
9
|
def test_to_s
|
14
|
-
assert_equal(@d_0.to_s, "
|
15
|
-
assert_equal(@s_2.to_s, "
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_dim
|
19
|
-
assert_equal(@d_0.dim, 0)
|
20
|
-
assert_equal(@s_2.dim, 2)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_suf
|
24
|
-
assert_equal(@d_0.suf, "_rD_0")
|
25
|
-
assert_equal(@s_2.suf, "_rS_2")
|
10
|
+
assert_equal(@d_0.to_s, "RealDim0Kind64")
|
11
|
+
assert_equal(@s_2.to_s, "RealDim2Kind32")
|
26
12
|
end
|
27
13
|
|
28
|
-
def
|
29
|
-
assert_equal(@d_0.
|
30
|
-
assert_equal(@s_2.
|
14
|
+
def test_declare
|
15
|
+
assert_equal(@d_0.declare, "Real(REAL64)")
|
16
|
+
assert_equal(@s_2.declare, "Real(REAL32), dimension(:, :)")
|
31
17
|
end
|
32
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fort
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-08-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby_patch
|
16
|
-
requirement: &
|
16
|
+
requirement: &69729240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *69729240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: pry
|
27
|
-
requirement: &
|
27
|
+
requirement: &69726510 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,13 +32,14 @@ dependencies:
|
|
32
32
|
version: '0.9'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *69726510
|
36
36
|
description: Ruby library for Fortran 90 and newer.
|
37
37
|
email:
|
38
38
|
executables: []
|
39
39
|
extensions: []
|
40
40
|
extra_rdoc_files: []
|
41
41
|
files:
|
42
|
+
- fort.gemspec
|
42
43
|
- lib/fort.rb
|
43
44
|
- lib/fort/src.rb
|
44
45
|
- lib/fort/src/code.rb
|