Inheritance |
|
これは、アトリビュートパターンから構築可能なパターンマッチングオブジェクトです。 pdg.AttributeOwner.attribMatch関数と併用することで、マッチしたワークアイテムアトリビュート名のリストを取得することができます。
このパターンは、アトリビュートパターン構文セクションで指定されているルールを使用します。
メソッド ¶
静的メソッド ¶
isValidName(attrib_name)
→ bool
指定した名前が有効なアトリビュート名であればTrue
、そうでないならFalse
を返します。
makeValidName(attrib_name)
→ bool
指定した文字列を有効なアトリビュート名に変換します。
splitByAttribute(work_items, attrib_names, partial_matches=False)
→ tuple
入力リスト内のワークアイテムを、指定したアトリビュート名(s)で分割します。 アトリビュート値とその値を持ったワークアイテムのリストのマップ、そのアトリビュートが見つからなかったワークアイテムのリスト、固有な値のリストを返します。 この固有な値のリストは、値の昇順でソートされます。
ワークアイテム上のattrib_name
のどの値も同じタイプである必要はありません。
どのアトリビュート値も文字列に変換されます。
複数のアトリビュート名をスペース区切りの文字列として渡すことができます。
この関数に複数のアトリビュート名を渡すと、それらのアトリビュート値は単一値ではなくタプルとして扱われます。
複数のアトリビュート名を指定する時、このpartial_matches
フラグでは、それらのアトリビュートのどれかのみを持ったワークアイテムも部分マッチしたマップエントリーに追加するべきかどうかを示します。
例:
attribute = "wedgeindex" (value_map, missing, unique) = pdg.AttributePattern.splitByAttribute(node.work_items, attribute) print("Attribute {} has {} unique values".format(attribute, len(unique))) for work_item in missing: print("Work Item {} is missing attrib {}".format(attribute)) for entry in value_map: print("{} work items have value {}".format(len(value_map[entry]), entry))
splitByFloat(work_items, attrib_name)
→ tuple
指定したfloatアトリビュート名で入力ワークアイテムを分割します。
この関数はsplitByAttribute
と同様ですが、アトリビュート値を文字列に変換しません。
指定した名前のアトリビュートを持ったワークアイテムではあるものの、そのアトリビュートのタイプが異なっている場合は、そのアトリビュートが見つからないワークアイテムとして考慮されます。
splitByInt(work_items, attrib_name)
→ tuple
指定した整数アトリビュート名で入力ワークアイテムを分割します。
この関数はsplitByAttribute
と同様ですが、アトリビュート値を文字列に変換しません。
指定した名前のアトリビュートを持ったワークアイテムではあるものの、そのアトリビュートのタイプが異なっている場合は、そのアトリビュートが見つからないワークアイテムとして考慮されます。
splitByString(work_items, attrib_name)
→ tuple
指定した文字列アトリビュート名で入力ワークアイテムを分割します。
この関数はsplitByAttribute
と同様です。
指定した名前のアトリビュートを持ったワークアイテムではあるものの、そのアトリビュートのタイプが異なっている場合は、そのアトリビュートが見つからないワークアイテムとして考慮されます。
インスタンスメソッド ¶
__init__(pattern, default_match_type=pdg.attribMatchType.Plain, strict=True)
指定した文字列から新しいパターンオブジェクトを構築します。
strictをFalse
に設定すると、pattern内のアトリビュート名には任意の文字(*
と^
と空白を除く)を使用することができます。
strictをTrue
に設定すると、_
と英数字の文字のみがアトリビュート名に使用することができます。
strictモードが無効になっていると、:
区切り文字を使ってアトリビュートタイプを指定することができません。
default_match_type
は、入力文字列内の項目に明示的に*
トークンが含まれていない場合に使用されるパターンのタイプを決めます。
例えば、default_match_type
にpdg.attribMatchType.Bothを設定すると、そのパターンの項目に*
トークンが含まれていなくても、すべての項目の先頭と末尾に*
トークンが自動的に追加されます。
example other*
というパターンは、その場合だと実質的に*example* other*
と同じになります。
デフォルトでは、その引数にpdg.attribMatchType.Plainが設定されているので、*
トークンは追加されません。
components(name, type=pdg.attribType.Undefined)
→ tuple
name
からパターンにマッチしたコンポーネントを(prefix, match, suffix)
形式のタプルで返します。
このprefix
コンポーネントは、パターン内の先頭の*
文字にマッチしたname
の部分に呼応します。
このmatch
コンポーネントは、パターンにマッチしたname
の部分に呼応します。
このsuffix
コンポーネントは、パターン内の末尾の*
文字にマッチしたname
の部分に呼応します。
name
がパターンにマッチしなかった場合、この関数はNone
を返します。
例えば、*example*
というパターンを渡すと、入力文字列がan_example
なら("an_", "example", "")
のタプルを返します。
入力文字列がan_example_string
なら("an_", "example", "_string")
を返します。
contains(name, type=pdg.attribType.Undefined)
→ bool
指定したアトリビュート名とアトリビュートタイプがパターンに合致した場合はTrueを返し、そうでない場合はFalseを返します。
type
をpdg.attribType.Undefinedに設定すると、アトリビュートを合致させる時にタイプが無視されます。
multiComponents(input_names=[], keep_plain=False)
→ dict
of tuple
input_names
内の名前毎にpdg.AttributePattern.components関数を適用し、input_names
内の各エントリーとその結果のマッチコンポーネントタプルをマッピングした辞書を返します。
input_names
内のエントリーがパターンにまったくマッチしなかった場合、そのエントリーは出力辞書には含まれません。
keep_plain
をTrue
に設定すると、*
トークンが含まれていないパターンコンポーネントはinput_names
に含まれていない場合でも常に出力辞書に含まれるようになります。
multiMatch(input_names=[], keep_plain=False)
→ list
of str
パターンに合致した入力リスト内の文字列名の配列を返します。
keep_plain
をTrue
に設定すると、たとえinput_names
内にパターンコンポーネントがなくても、自身に*
トークンを含まないパターンコンポーネントが常に出力リストに含まれるようになります。
その結果、input_names
が空っぽでkeep_plain
がTrue
の場合、この関数は、単純な文字列名として表現されたパターンコンポーネントのリストを返します。
Methods from pdg.BasePattern ¶
errors
: str
Property
パターンが無効だった場合、この文字列には分析エラーが含まれます。
isValid
: bool
Property
パターンが有効だった場合、Trueに設定されます。 無効だった場合、Falseに設定されます。
pattern
: str
Property
このパターンオブジェクトの構築に使用するソース文字列。