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 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