@@ -29,6 +29,7 @@ use crate::{
|
||||
},
|
||||
},
|
||||
line_numbers::LineNumbers,
|
||||
plutus_version::PlutusVersion,
|
||||
tipo::{
|
||||
check_replaceable_opaque_type, convert_opaque_type, find_and_replace_generics,
|
||||
get_arg_type_name, get_generic_id_and_type, lookup_data_type_by_tipo,
|
||||
@@ -51,6 +52,8 @@ use uplc::{
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CodeGenerator<'a> {
|
||||
#[allow(dead_code)]
|
||||
plutus_version: PlutusVersion,
|
||||
/// immutable index maps
|
||||
functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>,
|
||||
data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>,
|
||||
@@ -75,6 +78,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
}
|
||||
|
||||
pub fn new(
|
||||
plutus_version: PlutusVersion,
|
||||
functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>,
|
||||
data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>,
|
||||
module_types: IndexMap<&'a str, &'a TypeInfo>,
|
||||
@@ -82,6 +86,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
tracing: Tracing,
|
||||
) -> Self {
|
||||
CodeGenerator {
|
||||
plutus_version,
|
||||
functions,
|
||||
data_types,
|
||||
module_types,
|
||||
|
||||
@@ -12,6 +12,7 @@ pub mod gen_uplc;
|
||||
pub mod levenshtein;
|
||||
pub mod line_numbers;
|
||||
pub mod parser;
|
||||
pub mod plutus_version;
|
||||
pub mod pretty;
|
||||
pub mod tipo;
|
||||
|
||||
|
||||
51
crates/aiken-lang/src/plutus_version.rs
Normal file
51
crates/aiken-lang/src/plutus_version.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use pallas::ledger::primitives::conway::Language;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize, Clone, Copy, PartialEq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum PlutusVersion {
|
||||
V1,
|
||||
#[default]
|
||||
V2,
|
||||
V3,
|
||||
}
|
||||
|
||||
impl From<PlutusVersion> for Language {
|
||||
fn from(value: PlutusVersion) -> Self {
|
||||
match value {
|
||||
PlutusVersion::V1 => Language::PlutusV1,
|
||||
PlutusVersion::V2 => Language::PlutusV2,
|
||||
PlutusVersion::V3 => Language::PlutusV3,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&PlutusVersion> for Language {
|
||||
fn from(value: &PlutusVersion) -> Self {
|
||||
match value {
|
||||
PlutusVersion::V1 => Language::PlutusV1,
|
||||
PlutusVersion::V2 => Language::PlutusV2,
|
||||
PlutusVersion::V3 => Language::PlutusV3,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Language> for PlutusVersion {
|
||||
fn from(value: Language) -> Self {
|
||||
match value {
|
||||
Language::PlutusV1 => PlutusVersion::V2,
|
||||
Language::PlutusV2 => PlutusVersion::V2,
|
||||
Language::PlutusV3 => PlutusVersion::V3,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PlutusVersion {
|
||||
pub fn cardano_cli_type(&self) -> String {
|
||||
match self {
|
||||
PlutusVersion::V1 => "PlutusScriptV1".to_string(),
|
||||
PlutusVersion::V2 => "PlutusScriptV2".to_string(),
|
||||
PlutusVersion::V3 => "PlutusScriptV3".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user