UNPKG

react-native-slang

Version:

React native interface for Slang

63 lines (56 loc) 1.78 kB
import {SlangEntity, SlangIntent, SlangStatement} from './slangIntent'; import {NativeModules} from 'react-native'; const {SlangBuddy} = NativeModules; const entityExtractor = entities => { return entities.map(entity => { const entityType = entity.type; const value = entity.value; const name = entity.name; const isRequired = entity.isRequired; const isResolved = entity.isResolved; const isList = entity.isList; let listValues = null; if (isList && isResolved) { listValues = entityExtractor(entity.listValues); } const slangEntity = new SlangEntity( name, entityType, value, isRequired, isResolved, isList, listValues, ); return slangEntity; }); }; // Takes response from android sdk and the schema and // creates a sdk specific view to be used by the application developer. const createSlangIntent = slangIntentFromSDK => { const name = slangIntentFromSDK.intent.name; const userUtterance = slangIntentFromSDK.intent.userUtterance; const status = slangIntentFromSDK.intent.status; const completionStatementAffirmative = slangIntentFromSDK.intent.completionStatement_affirmative; const completionStatementNegative = slangIntentFromSDK.intent.completionStatement_negative; const overrideAffirmative = overrideStatement => { SlangBuddy.overrideAffirmative(overrideStatement); }; const slangStatement = new SlangStatement( completionStatementAffirmative, completionStatementNegative, overrideAffirmative, ); let entities = entityExtractor(slangIntentFromSDK.entities); const intent = new SlangIntent( name, slangStatement, entities, userUtterance, status, ); return intent; }; export {createSlangIntent};