<commit_before>//
//  Copyright © 2017 Info Reqd. All rights reserved.
//

import UIKit

/*
 Note:
 1) The animation is defined through a closure, really similarly to the UIView animation helpers “UIView.animation(duration:…)”.
 2) An object, the animator, is returned.
 3) The animation is not started immediately, but is triggered with the startAnimation() function.<commit_msg>comments on how the project will develop<commit_after>//
//  Copyright © 2017 Info Reqd. All rights reserved.
//

import UIKit

/*
 Note:
 1) The animation is defined through a closure, really similarly to the UIView animation helpers “UIView.animation(duration:…)”.
 2) An object, the animator, is returned.
 3) The animation is not started immediately, but is triggered with the startAnimation() function.
 
 SRP - creates the view hierarchy created for the animation. The aim of creating such a hierarchy is to show the animation in context of when. Doing #1 for now
 1. say the view animates itself say in response to some external trigger like the view is pushed and you want to bring attention to this piece of information.
 2. animates in response to a gesture but is not interruptible eg like a tap or a pan
 3. animates in response to a gesture but is interruptible
 
 
{'fraction_non_alphanumeric': 0.06041335453100159, 'fraction_numerical': 0.014308426073131956, 'mean_word_length': 3.9762845849802373, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2146641', 'n_tokens_mistral': 336, 'n_tokens_neox': 312, 'n_words': 189}