clipsruby 0.0.29 → 0.0.31

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +50 -4
  3. data/ext/clipsruby/clipsruby.c +143 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 305eb61d4442d705a0e3cf576056151266170cd5a3c8e67d2c2d01efe65ed540
4
- data.tar.gz: 2de8f8f91cfc7c529239f1fbbd8f7701bfc08ff24e7576a162ab4d4bd3111f18
3
+ metadata.gz: e60b635195b3e8fb7375f1f93d4fa5c8459c6eb5c3ed22e9e189029382e74da8
4
+ data.tar.gz: a641f8b2fbbdeca662101ab05ad0dbd6b8fe4688c2ad6ba73f04a2de93badacc
5
5
  SHA512:
6
- metadata.gz: 271deb181e3aea58a76b104ac876e6130be561e56261175bcb9ef0ddb334a7ebbeda13a3e2d964c0291fe4b47d2f3f806c83d09dae90efe50bd57aca718bc41e
7
- data.tar.gz: 64a925ca77540df3b8b77ce15004369f478431909fcb6a7ffc4fd4f9f516e67362ddd5b4a0012832cf3e64ba54051fca16b870a37784ce01cf3cdcf66e4a4653
6
+ metadata.gz: e7a266cd73117d6497c4c93d141311ceaaaff17550ba753af0eaa98c8051cac3b0ea44d36c4d796da5982354ba417b38a937a49e68992add8e290cbbb22811ab
7
+ data.tar.gz: 82822e678d0342232792fc5ffb8d451e54d2e9e8cce877bdf5d8fa231c045a2477621c82d9b6d17967502d8135b6a5d1049a3539b6f8b84b82669bc4b493c312
data/README.md CHANGED
@@ -474,6 +474,16 @@ CLIPS::Environment::Defrule.remove_break(defrule)
474
474
  defrule.remove_break
475
475
  ```
476
476
 
477
+ ### `CLIPS::Environment::Defrule.salience`
478
+ ### `CLIPS::Environment::Defrule#salience`
479
+
480
+ Returns the salience of a defrule
481
+
482
+ ```ruby
483
+ CLIPS::Environment::Defrule.salience(defrule)
484
+ defrule.salience
485
+ ```
486
+
477
487
  ### `CLIPS::Environment.find_defmodule`
478
488
  ### `CLIPS::Environment#find_defmodule`
479
489
 
@@ -532,14 +542,40 @@ symbol, string, or Defmodule object in order to only get Deftemplates
532
542
  in that Defmodule. If you do not, it will return all Deftemplate names in all modules.
533
543
 
534
544
  ```ruby
535
- CLIPS::Environment.get_deftemplate_list
545
+ CLIPS::Environment.get_deftemplate_list(env)
536
546
  env.get_deftemplate_list
537
- CLIPS::Environment.get_deftemplate_list(:MAIN)
547
+ CLIPS::Environment.get_deftemplate_list(env, :MAIN)
538
548
  env.get_deftemplate_list(:MAIN)
539
- CLIPS::Environment.get_deftemplate_list(defmodule)
549
+ CLIPS::Environment.get_deftemplate_list(env, defmodule)
540
550
  env.get_deftemplate_list(defmodule)
541
551
  ```
542
552
 
553
+ ### `CLIPS::Environment.get_defrule_list`
554
+ ### `CLIPS::Environment#get_defrule_list`
555
+
556
+ Return an array of Defrule names as symbols in the environment. Pass an argument of a
557
+ symbol, string, or Defmodule object in order to only get Defrules
558
+ in that Defmodule. If you do not, it will return all Defrule names in all modules.
559
+
560
+ ```ruby
561
+ CLIPS::Environment.get_defrule_list(env)
562
+ env.get_defrule_list
563
+ CLIPS::Environment.get_defrule_list(env, :MAIN)
564
+ env.get_defrule_list(:MAIN)
565
+ CLIPS::Environment.get_defrule_list(env, defmodule)
566
+ env.get_defrule_list(defmodule)
567
+ ```
568
+
569
+ ### `CLIPS::Environment.get_defmodule_list`
570
+ ### `CLIPS::Environment#get_defmodule_list`
571
+
572
+ Return an array of Defmodule names as symbols in the environment.
573
+
574
+ ```ruby
575
+ CLIPS::Environment.get_defmodule_list(env)
576
+ env.get_defmodule_list
577
+ ```
578
+
543
579
  ### `CLIPS::Environment.find_deftemplate`
544
580
  ### `CLIPS::Environment#find_deftemplate`
545
581
 
@@ -741,13 +777,23 @@ deftemplate.slot_defaultp('bar')
741
777
  ### `CLIPS::Environment::Defmodule.get_deftemplate_list`
742
778
  ### `CLIPS::Environment::Defmodule#get_deftemplate_list`
743
779
 
744
- Return an array of Deftemplate names as symboles in the Defmodule
780
+ Return an array of Deftemplate names as symbols in the Defmodule
745
781
 
746
782
  ```ruby
747
783
  CLIPS::Environment::Defmodule.get_deftemplate_list(defmodule)
748
784
  defmodule.get_deftemplate_list
749
785
  ```
750
786
 
787
+ ### `CLIPS::Environment::Defmodule.get_defrule_list`
788
+ ### `CLIPS::Environment::Defmodule#get_defrule_list`
789
+
790
+ Return an array of Defrule names as symbols in the Defmodule
791
+
792
+ ```ruby
793
+ CLIPS::Environment::Defmodule.get_defrule_list(defmodule)
794
+ defmodule.get_defrule_list
795
+ ```
796
+
751
797
  ### `CLIPS::Environment.find_deffacts`
752
798
  ### `CLIPS::Environment#find_deffacts`
753
799
 
@@ -1954,6 +1954,74 @@ static VALUE clips_environment_static_get_deftemplate_list(int argc, VALUE *argv
1954
1954
  return out;
1955
1955
  }
1956
1956
 
1957
+ static VALUE clips_environment_get_defrule_list(int argc, VALUE *argv, VALUE rbEnvironment) {
1958
+ VALUE defmodule_or_defmodule_name;
1959
+ Environment *env;
1960
+ Defmodule *module;
1961
+ CLIPSValue value;
1962
+ VALUE out;
1963
+
1964
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
1965
+
1966
+ rb_scan_args(argc, argv, "01", &defmodule_or_defmodule_name);
1967
+ switch (TYPE(defmodule_or_defmodule_name)) {
1968
+ case T_NIL:
1969
+ module = NULL;
1970
+ break;
1971
+ case T_STRING:
1972
+ case T_SYMBOL:
1973
+ TypedData_Get_Struct(
1974
+ clips_environment_find_defmodule(rbEnvironment, defmodule_or_defmodule_name),
1975
+ Defmodule, &Defmodule_type, module);
1976
+ break;
1977
+ case T_DATA:
1978
+ TypedData_Get_Struct(defmodule_or_defmodule_name, Defmodule, &Defmodule_type, module);
1979
+ break;
1980
+ default:
1981
+ rb_warn("defmodule name must be a symbol or string");
1982
+ return Qnil;
1983
+ }
1984
+ GetDefruleList(env, &value, module);
1985
+
1986
+ CLIPSValue_to_VALUE(&value, &out, &rbEnvironment);
1987
+
1988
+ return out;
1989
+ }
1990
+
1991
+ static VALUE clips_environment_static_get_defrule_list(int argc, VALUE *argv, VALUE klass) {
1992
+ VALUE rbEnvironment, defmodule_or_defmodule_name;
1993
+ Environment *env;
1994
+ Defmodule *module;
1995
+ CLIPSValue value;
1996
+ VALUE out;
1997
+
1998
+ rb_scan_args(argc, argv, "11", &rbEnvironment, &defmodule_or_defmodule_name);
1999
+
2000
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
2001
+ switch (TYPE(defmodule_or_defmodule_name)) {
2002
+ case T_NIL:
2003
+ module = NULL;
2004
+ break;
2005
+ case T_STRING:
2006
+ case T_SYMBOL:
2007
+ TypedData_Get_Struct(
2008
+ clips_environment_find_defmodule(rbEnvironment, defmodule_or_defmodule_name),
2009
+ Defmodule, &Defmodule_type, module);
2010
+ break;
2011
+ case T_DATA:
2012
+ TypedData_Get_Struct(defmodule_or_defmodule_name, Defmodule, &Defmodule_type, module);
2013
+ break;
2014
+ default:
2015
+ rb_warn("defmodule name must be a symbol or string");
2016
+ return Qnil;
2017
+ }
2018
+ GetDefruleList(env, &value, module);
2019
+
2020
+ CLIPSValue_to_VALUE(&value, &out, &rbEnvironment);
2021
+
2022
+ return out;
2023
+ }
2024
+
1957
2025
  static VALUE clips_environment_defmodule_name(VALUE self)
1958
2026
  {
1959
2027
  Defmodule *defmodule;
@@ -2050,6 +2118,50 @@ static VALUE clips_environment_defmodule_static_get_deftemplate_list(VALUE self,
2050
2118
  return clips_environment_defmodule_get_deftemplate_list(rbDefmodule);
2051
2119
  }
2052
2120
 
2121
+ static VALUE clips_environment_defmodule_get_defrule_list(VALUE self)
2122
+ {
2123
+ Defmodule *module;
2124
+ Environment *env;
2125
+ CLIPSValue value;
2126
+ VALUE out;
2127
+
2128
+ VALUE rbEnvironment = rb_iv_get(self, "@environment");
2129
+
2130
+ TypedData_Get_Struct(self, Defmodule, &Defmodule_type, module);
2131
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
2132
+
2133
+ GetDefruleList(env, &value, module);
2134
+
2135
+ CLIPSValue_to_VALUE(&value, &out, &rbEnvironment);
2136
+
2137
+ return out;
2138
+ }
2139
+
2140
+ static VALUE clips_environment_defmodule_static_get_defrule_list(VALUE self, VALUE rbDefmodule)
2141
+ {
2142
+ return clips_environment_defmodule_get_defrule_list(rbDefmodule);
2143
+ }
2144
+
2145
+ static VALUE clips_environment_get_defmodule_list(VALUE self)
2146
+ {
2147
+ Environment *env;
2148
+ CLIPSValue value;
2149
+ VALUE out;
2150
+
2151
+ TypedData_Get_Struct(self, Environment, &Environment_type, env);
2152
+
2153
+ GetDefmoduleList(env, &value);
2154
+
2155
+ CLIPSValue_to_VALUE(&value, &out, &self);
2156
+
2157
+ return out;
2158
+ }
2159
+
2160
+ static VALUE clips_environment_static_get_defmodule_list(VALUE self, VALUE rbEnvironment)
2161
+ {
2162
+ return clips_environment_get_defmodule_list(rbEnvironment);
2163
+ }
2164
+
2053
2165
  static VALUE clips_environment_defrule_name(VALUE self)
2054
2166
  {
2055
2167
  Defrule *defrule;
@@ -2067,10 +2179,18 @@ static VALUE clips_environment_defrule_static_name(VALUE self, VALUE rbDefrule)
2067
2179
  static VALUE clips_environment_defrule_pp_form(VALUE self)
2068
2180
  {
2069
2181
  Defrule *defrule;
2182
+ const char *pp_form;
2070
2183
 
2071
2184
  TypedData_Get_Struct(self, Defrule, &Defrule_type, defrule);
2072
2185
 
2073
- return rb_str_new2(DefrulePPForm(defrule));
2186
+ pp_form = DefrulePPForm(defrule);
2187
+
2188
+ if (pp_form == NULL) {
2189
+ rb_warn("defrule did not have pp_form. This can happen if the defrule was loaded from a binary file.");
2190
+ return Qnil;
2191
+ } else {
2192
+ return rb_str_new2(pp_form);
2193
+ }
2074
2194
  }
2075
2195
 
2076
2196
  static VALUE clips_environment_defrule_static_pp_form(VALUE self, VALUE rbDefrule)
@@ -2314,6 +2434,20 @@ static VALUE clips_environment_defrule_static_remove_break(VALUE self, VALUE rbD
2314
2434
  return clips_environment_defrule_remove_break(rbDefrule);
2315
2435
  }
2316
2436
 
2437
+ static VALUE clips_environment_defrule_salience(VALUE self)
2438
+ {
2439
+ Defrule *defrule;
2440
+
2441
+ TypedData_Get_Struct(self, Defrule, &Defrule_type, defrule);
2442
+
2443
+ return INT2NUM(defrule->salience);
2444
+ }
2445
+
2446
+ static VALUE clips_environment_defrule_static_salience(VALUE self, VALUE rbDefrule)
2447
+ {
2448
+ return clips_environment_defrule_salience(rbDefrule);
2449
+ }
2450
+
2317
2451
  static VALUE clips_environment_watch(VALUE self, VALUE item)
2318
2452
  {
2319
2453
  Environment *env;
@@ -3013,6 +3147,10 @@ void Init_clipsruby(void)
3013
3147
  rb_define_method(rbEnvironment, "get_fact_list", clips_environment_get_fact_list, -1);
3014
3148
  rb_define_singleton_method(rbEnvironment, "get_deftemplate_list", clips_environment_static_get_deftemplate_list, -1);
3015
3149
  rb_define_method(rbEnvironment, "get_deftemplate_list", clips_environment_get_deftemplate_list, -1);
3150
+ rb_define_singleton_method(rbEnvironment, "get_defrule_list", clips_environment_static_get_defrule_list, -1);
3151
+ rb_define_method(rbEnvironment, "get_defrule_list", clips_environment_get_defrule_list, -1);
3152
+ rb_define_singleton_method(rbEnvironment, "get_defmodule_list", clips_environment_static_get_defmodule_list, 1);
3153
+ rb_define_method(rbEnvironment, "get_defmodule_list", clips_environment_get_defmodule_list, 0);
3016
3154
  rb_define_singleton_method(rbEnvironment, "find_deffacts", clips_environment_static_find_deffacts, 2);
3017
3155
  rb_define_method(rbEnvironment, "find_deffacts", clips_environment_find_deffacts, 1);
3018
3156
  rb_define_singleton_method(rbEnvironment, "watch", clips_environment_static_watch, 2);
@@ -3136,6 +3274,8 @@ void Init_clipsruby(void)
3136
3274
  rb_define_method(rbDefmodule, "get_fact_list", clips_environment_defmodule_get_fact_list, 0);
3137
3275
  rb_define_singleton_method(rbDefmodule, "get_deftemplate_list", clips_environment_defmodule_static_get_deftemplate_list, 1);
3138
3276
  rb_define_method(rbDefmodule, "get_deftemplate_list", clips_environment_defmodule_get_deftemplate_list, 0);
3277
+ rb_define_singleton_method(rbDefmodule, "get_defrule_list", clips_environment_defmodule_static_get_defrule_list, 1);
3278
+ rb_define_method(rbDefmodule, "get_defrule_list", clips_environment_defmodule_get_defrule_list, 0);
3139
3279
 
3140
3280
  VALUE rbFact = rb_define_class_under(rbEnvironment, "Fact", rb_cObject);
3141
3281
  rb_define_alloc_func(rbFact, fact_alloc);
@@ -3174,6 +3314,8 @@ void Init_clipsruby(void)
3174
3314
  rb_define_method(rbDefrule, "set_break", clips_environment_defrule_set_break, 0);
3175
3315
  rb_define_singleton_method(rbDefrule, "remove_break", clips_environment_defrule_static_remove_break, 1);
3176
3316
  rb_define_method(rbDefrule, "remove_break", clips_environment_defrule_remove_break, 0);
3317
+ rb_define_singleton_method(rbDefrule, "salience", clips_environment_defrule_static_salience, 1);
3318
+ rb_define_method(rbDefrule, "salience", clips_environment_defrule_salience, 0);
3177
3319
 
3178
3320
  VALUE rbInstance = rb_define_class_under(rbEnvironment, "Instance", rb_cObject);
3179
3321
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clipsruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.0.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Johnston
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-23 00:00:00.000000000 Z
11
+ date: 2024-09-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Calling the CLIPS programming language from within Ruby
14
14
  email: mrryanjohnston@gmail.com