Skip to content
This repository has been archived by the owner on Jan 25, 2024. It is now read-only.

Commit

Permalink
Merge pull request #280 from Parabeac/release/1.3.4
Browse files Browse the repository at this point in the history
Release/1.3.4
  • Loading branch information
mergify[bot] committed Feb 23, 2021
2 parents c6c8cc8 + 9ad6cc9 commit c829ad2
Show file tree
Hide file tree
Showing 21 changed files with 152 additions and 84 deletions.
1 change: 0 additions & 1 deletion lib/controllers/interpret.dart
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ class Interpret {
log.fine(
'Processed \'${item.name}\' in group \'${group.name}\' with item type: \'${tempTree.tree_type}\'');

tempTree.rootNode;
tempForest.add(tempTree);
}
}
Expand Down
3 changes: 3 additions & 0 deletions lib/eggs/injected_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,19 @@ class PBAppBarGenerator extends PBGenerator {

buffer.write('AppBar(');
if (source.leadingItem != null) {
source.leadingItem.currentContext = source.currentContext;
buffer.write(
'leading: ${source.leadingItem.generator.generate(source.leadingItem, generatorContext)},');
}
if (source.middleItem != null) {
source.middleItem.currentContext = source.currentContext;
buffer.write(
'title: ${source.middleItem.generator.generate(source.middleItem, generatorContext)},');
}

if (source.trailingItem != null) {
var trailingItem = '';
source.trailingItem.currentContext = source.currentContext;
trailingItem =
'${source.trailingItem.generator.generate(source.trailingItem, generatorContext)}';
buffer.write('actions: [$trailingItem],');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,6 @@ class FlutterProjectBuilder {
log.error(error.toString());
}

// Add Pubspec Assets Lines.
var list = File('${pathToFlutterProject}pubspec.yaml').readAsLinesSync();
list.replaceRange(42, 44, [' assets:', ' - assets/images/']);
var sink = File('${pathToFlutterProject}pubspec.yaml')
.openWrite(mode: FileMode.write, encoding: utf8);
for (var i = 0; i < list.length; i++) {
sink.writeln(list[i]);
}
await sink.close();

await Directory('${pathToFlutterProject}assets/images')
.create(recursive: true)
.then((value) => {
Expand Down
1 change: 1 addition & 0 deletions lib/generation/generators/layouts/pb_row_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class PBRowGenerator extends PBLayoutGenerator {
List<PBIntermediateNode> children = source.children;

for (var child in children) {
child.currentContext = source.currentContext;
buffer.write(child.generator.generate(child, generatorContext));
var trailing_comma = (counter + 1) == children.length ? '' : ',';
buffer.write(trailing_comma);
Expand Down
11 changes: 11 additions & 0 deletions lib/generation/generators/middleware/middleware.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import 'package:parabeac_core/interpret_and_optimize/helpers/pb_gen_cache.dart';
import 'package:recase/recase.dart';

abstract class Middleware {
static var variableNames = {};

PBGenerationManager generationManager;

Middleware(this.generationManager);
Expand All @@ -24,4 +26,13 @@ abstract class Middleware {
void addImportToCache(String id, String path) {
PBGenCache().addToCache(id, path);
}

String getVariableName(String name) {
if (!variableNames.containsKey(name)) {
variableNames[name] = 1;
return name;
} else {
return name + '_' + (++variableNames[name]).toString();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,21 @@ class BLoCMiddleware extends Middleware {
var generalStateName = node.functionCallName
.substring(0, node.functionCallName.lastIndexOf('/'));

var globalVariableName = node.name.snakeCase;
var globalVariableName = getVariableName(node.name.snakeCase);
managerData.addGlobalVariable(PBVariable(globalVariableName, 'var ', true,
'${generalStateName.pascalCase}Bloc()'));

addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));

managerData.addToDispose('${globalVariableName}.close()');
node.generator = StringGeneratorAdapter('''
if (node.generator is! StringGeneratorAdapter) {
node.generator = StringGeneratorAdapter('''
BlocBuilder<${generalStateName.pascalCase}Bloc, ${generalStateName.pascalCase}State>(
cubit: ${globalVariableName},
builder: (context, state) => state.widget
)
''');
}
return node;
}
var parentState = getNameOfNode(node);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,18 @@ class ProviderMiddleware extends Middleware {
node.currentContext.project.genProjectData
.addDependencies(PACKAGE_NAME, PACKAGE_VERSION);
managerData.addImport('package:provider/provider.dart');
watcherName = node.name.snakeCase + '_notifier';
var widgetName = node.functionCallName.camelCase;

watcherName = getVariableName(node.name.snakeCase + '_notifier');
var watcher = PBVariable(watcherName, 'final ', true,
'context.watch<${getName(node.functionCallName).pascalCase}>().defaultWidget');
'context.watch<${getName(node.functionCallName).pascalCase}>().${widgetName}');
managerData.addMethodVariable(watcher);

addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));

node.generator = StringGeneratorAdapter(watcherName);
if (node.generator is! StringGeneratorAdapter) {
node.generator = StringGeneratorAdapter(watcherName);
}
return node;
}
watcherName = getNameOfNode(node);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,19 @@ class RiverpodMiddleware extends Middleware {
node.currentContext.project.genProjectData
.addDependencies(PACKAGE_NAME, PACKAGE_VERSION);
managerData.addImport('package:flutter_riverpod/flutter_riverpod.dart');
watcherName = node.functionCallName.snakeCase;
watcherName = getVariableName(node.functionCallName.snakeCase);
var watcher = PBVariable(watcherName + '_provider', 'final ', true,
'ChangeNotifierProvider((ref) => ${getName(node.functionCallName).pascalCase}())');

managerData.addMethodVariable(watcher);
var widgetName = node.functionCallName.camelCase;

addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));

node.generator = StringGeneratorAdapter(getConsumer(watcherName));
if (node.generator is! StringGeneratorAdapter) {
node.generator =
StringGeneratorAdapter(getConsumer(watcherName, widgetName));
}
return node;
}
watcherName = getNameOfNode(node);
Expand All @@ -50,12 +54,12 @@ class RiverpodMiddleware extends Middleware {
return node;
}

String getConsumer(String name) {
String getConsumer(String name, String pointTo) {
return '''
Consumer(
builder: (context, watch, child) {
final ${name} = watch(${name}_provider);
return ${name}.defaultWidget;
return ${name}.${pointTo};
},
)
''';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ class StatefulMiddleware extends Middleware {

if (node is PBSharedInstanceIntermediateNode) {
managerData.addGlobalVariable(await _getVariables(node));
node.generator = StringGeneratorAdapter(node.name.snakeCase);
if (node.generator is! StringGeneratorAdapter) {
node.generator = StringGeneratorAdapter(node.name.snakeCase);
}
addImportToCache(node.SYMBOL_ID, getImportPath(node, fileStrategy));
return node;
}
Expand All @@ -49,8 +51,10 @@ class StatefulMiddleware extends Middleware {
var symbolMaster =
PBSymbolStorage().getSharedMasterNodeBySymbolID(node.SYMBOL_ID);

var watcherName = getVariableName(node.name.snakeCase);

var tempVar = PBVariable(
node.name.snakeCase,
watcherName,
'var ',
true,
node.functionCallName == symbolMaster.name
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_inte
import 'package:recase/recase.dart';

class MiddlewareUtils {
static String generateChangeNotifierClass(String defaultStateName,
PBGenerationManager manager, PBIntermediateNode node) {
static String generateChangeNotifierClass(
String defaultStateName,
PBGenerationManager manager,
PBIntermediateNode node,
) {
var overrideVars = ''; // Variables outside of initializer
var overrideAttr = ''; // Attributes that will be part of initializer
var stateInitializers = StringBuffer();
Expand Down
61 changes: 19 additions & 42 deletions lib/generation/generators/util/pb_generation_view_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import 'package:parabeac_core/generation/generators/pb_variable.dart';
import 'package:parabeac_core/generation/generators/util/pb_input_formatter.dart';

class PBGenerationViewData {
final Set<PBVariable> _globalVariables = {};
final Set<PBVariable> _constructorVariables = {};
final Set<PBVariable> _methodVariables = {};
final Map<String, PBVariable> _globalVariables = {};
final Map<String, PBVariable> _constructorVariables = {};
final Map<String, PBVariable> _methodVariables = {};
final Set<String> _imports = {};
final Set<String> _toDispose = {};
bool _isDataLocked = false;
Expand All @@ -13,20 +13,20 @@ class PBGenerationViewData {

Iterator<String> get toDispose => _toDispose.iterator;

Iterator<PBVariable> get globalVariables => _globalVariables.iterator;
Iterator<PBVariable> get globalVariables => _globalVariables.values.iterator;

Iterator<PBVariable> get constructorVariables =>
_constructorVariables.iterator;
_constructorVariables.values.iterator;

///The [PBVariable]s that need to be added in between the method definition and its return statement
Iterator<PBVariable> get methodVariables => _methodVariables.iterator;
Iterator<PBVariable> get methodVariables => _methodVariables.values.iterator;

///Imports for the current page
Iterator<String> get imports => _imports.iterator;

String get methodVariableStr {
var buffer = StringBuffer();
var it = _methodVariables.iterator;
var it = _methodVariables.values.iterator;
while (it.moveNext()) {
var param = it.current;
buffer.writeln(
Expand All @@ -53,49 +53,26 @@ class PBGenerationViewData {
}

void addConstructorVariable(PBVariable parameter) {
if (!_isDataLocked && parameter != null) {
_constructorVariables.add(parameter);
if (!_isDataLocked &&
parameter != null &&
!_constructorVariables.containsKey(parameter.variableName)) {
_constructorVariables[parameter.variableName] = parameter;
}
}

void addGlobalVariable(PBVariable variable) {
if (!_isDataLocked && variable != null && globalHas(variable)) {
_globalVariables.add(variable);
}
}

bool globalHas(PBVariable variable) {
for (var v in _globalVariables) {
if (v.variableName == variable.variableName) {
return false;
}
if (!_isDataLocked &&
variable != null &&
!_globalVariables.containsKey(variable.variableName)) {
_globalVariables[variable.variableName] = variable;
}
return true;
}

void addAllGlobalVariable(Iterable<PBVariable> variable) =>
_globalVariables.addAll(variable);

void addMethodVariable(PBVariable variable) {
if (!_isDataLocked && variable != null && !_contains(variable)) {
_methodVariables.add(variable);
}
}

bool _contains(PBVariable variable) {
var result = false;
_methodVariables.forEach((element) {
if (element.variableName == variable.variableName) {
result = true;
return result;
}
});
return result;
}

void addAllMethodVariable(Iterable<PBVariable> variables) {
if (!_isDataLocked && variables != null) {
_methodVariables.addAll(variables);
if (!_isDataLocked &&
variable != null &&
!_methodVariables.containsKey(variable.variableName)) {
_methodVariables[variable.variableName] = variable;
}
}
}
1 change: 1 addition & 0 deletions lib/generation/generators/visual-widgets/pb_align_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class PBAlignGenerator extends PBGenerator {
'alignment: Alignment(${source.alignX.toStringAsFixed(2)}, ${source.alignY.toStringAsFixed(2)}),');

try {
source.child.currentContext = source.currentContext;
buffer.write(
'child: ${source.child.generator.generate(source.child, generatorContext)},');
} catch (e, stackTrace) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class PBContainerGenerator extends PBGenerator {
Point(source.topLeftCorner.x, source.topLeftCorner.y);
source.child.bottomRightCorner =
Point(source.bottomRightCorner.x, source.bottomRightCorner.y);
source.child.currentContext = source.currentContext;
var statement = source.child != null
? 'child: ${source.child.generator.generate(source.child, generatorContext)}'
: '';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class PBFlexibleGenerator extends PBGenerator {
buffer.write('Flexible(');
buffer.write('flex: ${source.flex},');
try {
source.child.currentContext = source.currentContext;
buffer.write(
'child: ${source.child.generator.generate(source.child, generatorContext)},');
} catch (e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class PBPaddingGen extends PBGenerator {
buffer.write('),');

if (source.child != null) {
source.child.currentContext = source.currentContext;
buffer.write(
'child: ${source.child.generator.generate(source.child, generatorContext)}');
}
Expand Down
12 changes: 8 additions & 4 deletions lib/generation/generators/visual-widgets/pb_text_gen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'package:parabeac_core/generation/generators/attribute-helper/pb_generato
import 'package:parabeac_core/generation/generators/pb_generator.dart';
import 'package:parabeac_core/input/sketch/helper/symbol_node_mixin.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/inherited_text.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/pb_shared_master_node.dart';
import 'package:parabeac_core/interpret_and_optimize/entities/subclasses/pb_intermediate_node.dart';

class PBTextGen extends PBGenerator with PBColorMixin {
Expand All @@ -13,8 +12,13 @@ class PBTextGen extends PBGenerator with PBColorMixin {
String generate(
PBIntermediateNode source, GeneratorContext generatorContext) {
if (source is InheritedText) {
source.currentContext.project.genProjectData
.addDependencies('auto_size_text', '^2.1.0');

source.managerData
.addImport('package:auto_size_text/auto_size_text.dart');
var buffer = StringBuffer();
buffer.write('Text(\n');
buffer.write('AutoSizeText(\n');
var isTextParameter = source.isTextParameter;
if (isTextParameter) {
var text = source.text;
Expand All @@ -27,8 +31,8 @@ class PBTextGen extends PBGenerator with PBColorMixin {
.write(('\'${source.text?.replaceAll('\n', ' ') ?? ''}\'') + ',\n');
}
buffer.write('style: ');
if(SN_UUIDtoVarName.containsKey('${source.UUID}_textStyle')){
buffer.write(SN_UUIDtoVarName[source.UUID + '_textStyle']);
if (SN_UUIDtoVarName.containsKey('${source.UUID}_textStyle')) {
buffer.write(SN_UUIDtoVarName[source.UUID + '_textStyle'] + ' ?? ');
}

buffer.write('TextStyle(\n');
Expand Down
Loading

0 comments on commit c829ad2

Please sign in to comment.