Enum proguard::ProguardRecord[][src]

pub enum ProguardRecord<'s> {
    Header {
        key: &'s str,
        value: Option<&'s str>,
    },
    Class {
        original: &'s str,
        obfuscated: &'s str,
    },
    Field {
        ty: &'s str,
        original: &'s str,
        obfuscated: &'s str,
    },
    Method {
        ty: &'s str,
        original: &'s str,
        obfuscated: &'s str,
        arguments: &'s str,
        original_class: Option<&'s str>,
        line_mapping: Option<LineMapping>,
    },
}

A Proguard Mapping Record.

Variants

Header

A Proguard Header.

Fields of Header

key: &'s str

The Key of the Header.

value: Option<&'s str>

Optional value if the Header is a KV pair.

Class

A Class Mapping.

Fields of Class

original: &'s str

Original name of the class.

obfuscated: &'s str

Obfuscated name of the class.

Field

A Field Mapping.

Fields of Field

ty: &'s str

Type of the field

original: &'s str

Original name of the field.

obfuscated: &'s str

Obfuscated name of the field.

Method

A Method Mapping.

Fields of Method

ty: &'s str

Return Type of the method.

original: &'s str

Original name of the method.

obfuscated: &'s str

Obfuscated name of the method.

arguments: &'s str

Arguments of the method as raw string.

original_class: Option<&'s str>

Original class of a foreign inlined method.

line_mapping: Option<LineMapping>

Optional line mapping of the method.

Implementations

impl<'s> ProguardRecord<'s>[src]

pub fn try_parse(line: &'s [u8]) -> Result<Self, ParseError<'s>>[src]

Parses a line from a proguard mapping file.

Examples

use proguard::ProguardRecord;

// Headers
let parsed = ProguardRecord::try_parse(b"# compiler: R8");
assert_eq!(
    parsed,
    Ok(ProguardRecord::Header {
        key: "compiler",
        value: Some("R8")
    })
);

// Class Mappings
let parsed =
    ProguardRecord::try_parse(b"android.arch.core.executor.ArchTaskExecutor -> a.a.a.a.c:");
assert_eq!(
    parsed,
    Ok(ProguardRecord::Class {
        original: "android.arch.core.executor.ArchTaskExecutor",
        obfuscated: "a.a.a.a.c"
    })
);

// Field
let parsed = ProguardRecord::try_parse(
    b"    android.arch.core.executor.ArchTaskExecutor sInstance -> a",
);
assert_eq!(
    parsed,
    Ok(ProguardRecord::Field {
        ty: "android.arch.core.executor.ArchTaskExecutor",
        original: "sInstance",
        obfuscated: "a",
    })
);

// Method without line mappings
let parsed = ProguardRecord::try_parse(
    b"    java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object) -> b",
);
assert_eq!(
    parsed,
    Ok(ProguardRecord::Method {
        ty: "java.lang.Object",
        original: "putIfAbsent",
        obfuscated: "b",
        arguments: "java.lang.Object,java.lang.Object",
        original_class: None,
        line_mapping: None,
    })
);

// Inlined method from foreign class
let parsed = ProguardRecord::try_parse(
    b"    1016:1016:void com.example1.domain.MyBean.doWork():16:16 -> buttonClicked",
);
assert_eq!(
    parsed,
    Ok(ProguardRecord::Method {
        ty: "void",
        original: "doWork",
        obfuscated: "buttonClicked",
        arguments: "",
        original_class: Some("com.example1.domain.MyBean"),
        line_mapping: Some(proguard::LineMapping {
            startline: 1016,
            endline: 1016,
            original_startline: Some(16),
            original_endline: Some(16),
        }),
    })
);

Trait Implementations

impl<'s> Clone for ProguardRecord<'s>[src]

impl<'s> Debug for ProguardRecord<'s>[src]

impl<'s> PartialEq<ProguardRecord<'s>> for ProguardRecord<'s>[src]

impl<'s> StructuralPartialEq for ProguardRecord<'s>[src]

Auto Trait Implementations

impl<'s> RefUnwindSafe for ProguardRecord<'s>

impl<'s> Send for ProguardRecord<'s>

impl<'s> Sync for ProguardRecord<'s>

impl<'s> Unpin for ProguardRecord<'s>

impl<'s> UnwindSafe for ProguardRecord<'s>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.