fort 0.0.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|