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 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 :sym, :len
7
+ attr_reader :len
8
8
 
9
9
  def initialize(dim = 0, len = 1)
10
10
  super(dim)
11
11
  @len = len
12
- len_suffix = case @len
13
- when '*'
14
- 'Ast'
15
- when ':'
16
- 'Colon'
17
- else
18
- @len
19
- end
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
- "Character(len = #{@len})"
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
- KIND_SYM = {
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
- @to_s ||= "Complex(REAL#{@kind})"
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
- KIND_SYM = {
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
- @to_s ||= "Integer(INT#{@kind})"
15
+ "#{super}Kind#{@kind}"
16
+ end
17
+
18
+ def declare
19
+ "#{@stem}(INT#{@kind})#{super}"
24
20
  end
25
21
  end
26
22
  end
@@ -4,15 +4,12 @@ module Fort
4
4
  require 'ruby_patch'
5
5
  extend ::RubyPatch::AutoLoad
6
6
 
7
- attr_reader :sym
8
-
9
7
  def initialize(dim = 0)
10
8
  super
11
- @sym = 'l'
12
9
  end
13
10
 
14
- def to_s
15
- "Logical"
11
+ def declare
12
+ "#{@stem}#{super}"
16
13
  end
17
14
  end
18
15
  end
@@ -4,22 +4,19 @@ module Fort
4
4
  require 'ruby_patch'
5
5
  extend ::RubyPatch::AutoLoad
6
6
 
7
- KIND_SYM = {
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
- @to_s ||= "Real(REAL#{@kind})"
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
- @colons ||= ([':']*@dim).join(', ')
28
+ ([':']*@dim).join(', ')
16
29
  end
17
30
 
18
31
  def parenthesis
19
- @parenthesis ||= if @dim >= 1
20
- "(#{self.colons})"
21
- else
22
- ''
23
- end
32
+ if @dim >= 1
33
+ "(#{self.colons})"
34
+ else
35
+ ''
36
+ end
24
37
  end
25
38
 
26
- def suf
27
- @suf ||= "_#{self.sym}_#{@dim}"
39
+ def format
40
+ "#{@dim}"
28
41
  end
29
42
  end
30
43
  end
data/lib/fort/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fort
2
- VERSION = '0.0.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -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, "Character(len = *)")
12
- assert_equal(@cColon_1.to_s, "Character(len = :)")
13
- assert_equal(@c3_2.to_s, "Character(len = 3)")
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 test_dim
17
- assert_equal(@cAst_0.dim, 0)
18
- assert_equal(@cColon_1.dim, 1)
19
- assert_equal(@c3_2.dim, 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, "Complex(REAL64)")
15
- assert_equal(@s_2.to_s, "Complex(REAL32)")
10
+ assert_equal(@d_0.to_s, "ComplexDim0Kind64")
11
+ assert_equal(@s_2.to_s, "ComplexDim2Kind32")
16
12
  end
17
13
 
18
- def test_suf
19
- assert_equal(@d_0.suf, "_zD_0")
20
- assert_equal(@s_2.suf, "_zS_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, "Integer(INT64)")
15
- assert_equal(@s_2.to_s, "Integer(INT32)")
10
+ assert_equal(@d_0.to_s, "IntegerDim0Kind64")
11
+ assert_equal(@s_2.to_s, "IntegerDim2Kind32")
16
12
  end
17
13
 
18
- def test_suf
19
- assert_equal(@d_0.suf, "_iD_0")
20
- assert_equal(@s_2.suf, "_iS_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, "Logical")
11
- assert_equal(@l2.to_s, "Logical")
10
+ assert_equal(@l0.to_s, "LogicalDim0")
11
+ assert_equal(@l2.to_s, "LogicalDim2")
12
12
  end
13
13
 
14
- def test_suf
15
- assert_equal(@l0.suf, "_l_0")
16
- assert_equal(@l2.suf, "_l_2")
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, "Real(REAL64)")
15
- assert_equal(@s_2.to_s, "Real(REAL32)")
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 test_parenthesis
29
- assert_equal(@d_0.parenthesis, "")
30
- assert_equal(@s_2.parenthesis, "(:, :)")
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: 0.0.0
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: &79800780 !ruby/object:Gem::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: *79800780
24
+ version_requirements: *69729240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: pry
27
- requirement: &79800210 !ruby/object:Gem::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: *79800210
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